时间:2021-05-20
一、简介
c++中,产生随机数的通用方法就是调用 srand()和 rand() 函数。
Rand
单纯的rand()会返回一个0至RAND_MAX之间的随机数值,而RAND_MAX的值与int位数有关,最小是32767。不过rand()是一次性的,因为系统默认的随机数种子为1,只要随机数种子不变,其生成的随机数序列就不会改变。
其实,对于rand()的范围,我们是可以进行人为设定的,只需要在宏定义中定义一个random(int x)函数,就可以生成范围为0至x的随机数值。当然,也可以定义为random(a,b) ,使其生成范围为a至b的随机数值。具体定义方法在通式部分。
Srand
srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取不同的随机数序列。可以利用srand((unsigned int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。不过要调用time() ,需要加入头文件< ctime > 。
值得注意的是,所有程序中“产生”的随机数其实是伪随机数,本质是调用存储在计算机里的一组无序数值序列。
因此在初始化随机数种子时,如果初始化相同的种子数值,得到的“随机数”会是一样的数值。
#include <iostream>#include <cstdlib>using namespace std;int main(){ int i; srand(1); for (i = 0; i < 10; i++) { cout << rand() << " "; }}第一次运行的结果。
第二次运行的结果,可以看出并不是真正意义上的随机数。
但是在运行同一次程序时,可以把这些数字看成是随机数。
二、产生随机数
关键是调用 time 函数初始化随机数种子,达到种子随变。此时需要调用 <ctime>头文件。
#include <iostream>#include <ctime>#include <cstdlib>using namespace std;int main(){ int i; srand((unsigned)time(NULL)); for (i = 0; i < 10; i++) { cout << rand() << " "; } return 0;}第一次运行结果。
第二次运行结果,可以看成真正意义上的随机数。
当需要(0-x)的随机数时,只需要在 rand() % x 即可。
当需要(0-1)的小数随机数时,只需要 ( rand() % x ) /x 即可,其中 x 与精度有关,可取 x=100 小数后两位。
三、猜拳小游戏
第一次。
第二次。
代码里x的值是考虑了不重复问题。
电脑a | 玩家x 4剪刀 7石头 10布 0剪刀 4 7 10 1石头 5 8 11 2布 6 9 12
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了C语言实现猜数字小游戏的具体代码,供大家参考,具体内容如下代码如下#include#include#include//rand为产生随机数的
C++随机数与随机种子数的实例实现效果图:实例代码:#include#include#includeusingnamespacestd;voidTest(){i
本文分享了C语言/C++如何生成随机数的具体实现方法,供大家参考,具体内容如下C语言/C++怎样产生随机数:这里要用到的是rand()函数,srand()函数,
本文实例为大家分享了java实现人机猜拳游戏的具体代码,供大家参考,具体内容如下完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑通过程序中的随机数实
C++怎样产生随机数:这里要用到的是rand()函数,srand()函数,C++里没有自带的random(intnumber)函数。(1)如果你只要产生随机数而