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

C++产生随机数

亿万年的星光5年前 (2021-01-28)趣味小程序2398
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++小游戏—简单飞机大战(1)

C++小游戏—简单飞机大战(1)

前面文章简单实现了弹球操作,这篇文章我们介绍一下如何实现简单的飞机大战操作。这篇文章我们要实现的效果如下:第一步:整体思路在某个点画出飞机的形状获取用户按下哪个按键根据按键移动飞机的位置按空格键发射子...

C++实现走迷宫小游戏

1.简单版本简单版本是利用字符数组实现的,利用字符数组设定入口和出口,用户每次按键就刷新一下当前字符数组。参考代码:#include<stdio.h>#include<stdlib....

C++小游戏—反弹球实现打砖块

C++小游戏—反弹球实现打砖块

0.前言在上一篇中,我们用C++代码实现了弹球小游戏,上一篇链接可以点击这里查看。这一篇中,我们继续优化代码,使用上一篇的弹球小游戏进行扩展,实现打砖块效果。1.思路底部挡板跟随键盘移动在顶部生成目标...

C++小游戏制作基础—键盘事件

0.前言我们制作小游戏的时候,需要用到键盘,一般是控制上下左右,这个时候就需要用到键盘事件了。1.键盘事件需要用到<conio.h>头文件,和_kbhit()函数程序参考:#include...

【C++图形化编程】flappy bird(3)—碰撞检测(大功告成)

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

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

二分法的模板写法:(1)标准的二分查找(寻找的值正好等于x的任意位置)int search(int A[], int n, int targ...