Qt产生随机数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt产生随机数
所谓的“伪随机数”指的并不是假的随机数,这里的“伪”是有规律的意思。其实绝对的随机数只是一种理想状态的随机数,计算机智能生成相对的随机数,即伪随机数。计算机生成的伪随机数既是随机的又是有规律的(一部分遵守规律,一部分不遵守任何规律)。
C++标准库中
Int rand(void)从srand()中指定seed开始,返回一个范围介于[seed,rand_max)的随机数。
Void srand(unsigned seed)的参数seed是rand()的随机种子,即用来初始化rand()的起始值。系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed()指定了一个值,那么rand()就会将seed的值作为产生伪随机数的初始值;而如果用户在rand()前没有调用过srand(),那么rand()就会自动调用srand(1),即系统默认将1作为伪随机数的初始值。
由上述可得知,如果希望rand()在每次程序运行时产生的值都不一样,必须给srand(seed)中的参数seed指定一个变值,这个变值必须在每次程序运行时都不一样(比如到目前为止流失的时间);如果我们给seed指定的是一个定值,那么每次程序运行的时候,rand()产生的随机数都会一样,只不过这个值是[seed,rand_max)范围中的一个随机取得的值。
举例说明,产生0~6之间的随机数(不包括6):
程序1:
For(int i=0;i<10;i++)
{
Ran_num=rand()%6;
Cout< } 程序2(指定seed为1) Srand(6); For(int i=0;i<10;i++) { Ran_num=rand()%6; Cout< } QT中的产生随机数的方法 方法1: #include QTime t; T=QTime::currentTime(); Qsrand(t.msec()+t.second()*1000); Int n=qrand(); 方法2: Qsrand(time(NULL)); Int n=qrand(); 这两句不一定要连着,前边初始化种子可以在程序开始的时候就开始。 如果两句连载一起啊,并且又同时出现在for循环中,就容易产生相同的随机数。