当前位置:首页 > 趣味小程序 > 正文内容

C++产生随机数

亿万年的星光5年前 (2021-01-28)趣味小程序2764
0.前言

想做一个掷骰子的小游戏,需要用到随机数函数,于是查了一些资料,整理了一下。

1.随机数函数

C++产生随机数需要用到rand()和srand()函数。期中,

(1)rand()叫随机数发生器,所在头文件是<cstdlib>,可以产生随机数,例如下面这个程序就是产生10以内的随机数。

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
   for (int i = 0; i < 10; i++)
   {
       cout << rand()%10<< " ";
   }
   return 0;
}

但是你运行这个程序后,你会发现它每次运行的结果是相同的,这是rand()函数的缺点,rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。

(2)srand()名为初始化随机数发生器,srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

(3)可以利用系统时钟产生不同的随机数种子。需要引入<ctime>头文件。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
   srand((int)time(NULL));
   for (int i = 0; i < 10; i++)
   {
       cout << rand()%10<< " ";
   }
   return 0;
}
2.产生某个范围内的随机数

要产生一定范围内的随机数,可以使用下面的公式:

要取得[0,n)  就是rand()%n     表示 从0到n-1的数
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 

你要是觉得上面的公式麻烦,可以用下面的通用的公式:

a + rand() % n;其中的a是起始值,n是整数的范围。 

下面这个程序就是产生3到10范围内的随机数

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
   srand((int)time(NULL));
   cout << (3+rand()%9)<< " ";
   return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    C++小游戏——简单飞机大战(2)——代码与显示优化

    C++小游戏——简单飞机大战(2)——代码与显示优化

    0.前言在上一篇中,我们在C++控制台中简单实现了飞机大战了逻辑,但是代码比较长,显示也不是很好看,这篇文章中,我们对上一篇的代码进行优化下,把很多过程封装成函数形式。让程序看上去更加精简。一个合理化...

    【二分与分治】中间值、边界值、循环条件、模块写法(1)

    【二分与分治】中间值、边界值、循环条件、模块写法(1)

    0.前言二分法并不简单,或者说“思路简单,细节爆炸”,举例来说,你可能已经看过很多题解,那么可能会看到下面几种写法mid=(left+right)/2 mid=(left+right)>&...

    【C++图形化编程】使用键盘做一个简单画板

    【C++图形化编程】使用键盘做一个简单画板

    参考代码#include <graphics.h> // 引用图形库头文件 #include<cstdio> #include<conio.h&...

    C++小游戏—弹跳小球

    C++小游戏—弹跳小球

    首先,要注意屏幕直角坐标系的问题,不然的话,后面移动过程中一定会出错。然后,利用printf函数在屏幕坐标(x,y)处显示一个静止的小球字符‘O’,注意屏幕坐标系的原点在左上方,参考代码#includ...

    C++ 实用趣味小程序(1)

    1.仿动画效果#include <cstdio>#include <windows.h>  //内含延时函数 #include <process.h> /...

    EasyX小游戏—双人反弹球

    参考代码:#include <conio.h> #include <graphics.h> #include<windows.h> #de...