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

C++产生随机数

亿万年的星光4年前 (2021-01-28)趣味小程序1984
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++图形化编程】播放背景音乐

再做小游戏的时候有的时候需要背景音乐,这一点EasyX也可以实现。需要的头文件#include <mmsystem.h>  //多媒体设备接口 #pragm...

C++ 如何监听用户按下了哪个按键

想做一款小游戏,键盘事件是必须要了解的。前面的文章简单介绍过键盘事件,这篇文章简单实现了监听用户键盘的操作,主要监听“WASD”以及“上下左右”键参考代码#include<cstdio>...

【算法】前缀和与差分(1)一维数组前缀和

【算法】前缀和与差分(1)一维数组前缀和

一、定义前缀和:是指某序列的前n项和。可以理解成数学上上的数列的前n项和。差分:是前缀和的逆运算。二、前缀和的分类可以分成一维数组的前缀和和二维 数组的前缀和一维数组前缀和  &n...

【C++图形化编程】EasyX的基本概念

一、颜色        EasyX 使用 24bit 真彩色,不支持调色板模式。     ...

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

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

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

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

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

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