前情提醒:初一生屑作,有错可在评论中指出XD
我们都知道,在c++中生成随机数需要使用rand函数,目前c++上生成随机数的主流方法有以下3种
一:直接使用rand()生成,如
number=rand();
这样有一个坏处,就是生成的数只会在一个列表中循环,因为c++生成的数是伪随机数,由电脑在序列中按照一定的种子选择,为了解决这个问题,我们就要用到srand函数。。
二:改变随机数生成种子,如
先使用srand(任意数字,如114514)改变种子,随后再
number=rand();
但是这样比较麻烦,毕竟我们还要一次一次手动去改变,为了方便一点,我们可以使用time函数来生成种子。
三:time生成种子(time包含在头文件<ctime>中),如
seed=time(0);
srand(seed);
number=rand();
这样就能方便的生成随机数,但它仍然有一个缺点,因为time获取的是秒数,所以一秒内只能改变一次种子。
假如你要在1秒内生成多个随机数,用上列的方法却只能得到同一个数,为了解决这个问题,我自己设计了一个程序,下面大家一起来看看罢(心虚)。
#include <iostream> //导入输入输出流
#include <cstdlib> //导入rand函数头文件
#include <ctime> //导入time函数头文件
using namespace std; //使用命名空间
int main(){ // 主函数,没什么好说的
unsigned seed,times; //定义两个无符号变量
int randd; //定义int型变量
times=time(0); //用time函数获取秒数
seed=times; //种子的初始状态用time
while (seed){ //无限循环
srand(seed); //将种子改变为变量seed
randd=rand(); //生成随机数
cout << randd << endl; //显示随机数
if (seed>1000000) seed=12; //避免因数值过大而导致程序崩掉
else seed+=randd; //将seed加上随机生成的数,完美保证了随机数的快速生成
}
}
总之,这就是我摸索出来的方法,
如果本文对你有所帮助,请点一个大大的赞 //没有硬币(大嘘)
如果你发现了错误,请在评论区指出
谢谢大家