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

C++产生随机数

亿万年的星光5年前 (2021-01-28)趣味小程序2566
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++图形化编程】flappy bird(3)—碰撞检测(大功告成)

0.前言    前面几篇文章中,我们简单介绍了基础框架和游戏逻辑,这一篇文章我们接着上一篇,继续完善游戏,主要是移动与碰撞逻辑的检测...

【C++图形化编程】flappy bird(1)—基础框架及图形图像

【C++图形化编程】flappy bird(1)—基础框架及图形图像

0.前言    前面一篇文章,我们简单介绍了鼠标的一些操作, 这篇文章,我们还是一个实战教程,flappy bird的小游戏。1.导入背景和音乐  &...

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

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

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

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

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

C++小游戏—猜数游戏

0.游戏内容玩家猜电脑产生的数字,一个两次机会,才对了给提示,猜错减去一次机会。1.参考代码#include<iostream>#include<cstdlib>#includ...

C++在指定位置输出符号

C++在指定位置输出符号

0.前言需要做控制台小游戏,需要获取光标在控制台的位置,从网上查到了gotoxy()函数可以实现,但是在DEVC++环境中直接调用这个gotoxy()会报错,于是查了一些资料,把过程记录下来。1.过程...