其他分享
首页 > 其他分享> > 关于srand随机数的问题

关于srand随机数的问题

作者:互联网

 

 一念白发I 2021/12/4 10:49:09
学长,我写了一个产生随机数组的函数,然后调用了几百次,每次都打印出来,我发现他每几十次都是一个结果

就是这种情况。是不是随机数产生的时候在很小一段时间内都是产生的相同的数?怎么让他每次都不一样呢?

一念白发I 2021/12/4 10:49:50

这两个是产生随机数用的函数

01星球-云海学长 10:34:55
因为每次调用srand() 并且传入相同值的时候  产生的数字都是一样的

01星球-云海学长 10:35:20
也就是调用srand(1)后  接下来所有的rand() 都是由1生成的随机数

01星球-云海学长 10:35:46
避免重复很简单  就是调用前sleep(1)  休眠一毫秒  避免随机数种子重复

一念白发I 10:50:21


一念白发I 10:50:28
学长还是一样的。。。

01星球-云海学长 10:51:08
打印那边是怎么写的 截图我看看

一念白发I 10:51:39


一念白发I 10:52:27
有个循环,每次都是重新调用的产生随机数组的函数

01星球-云海学长 10:53:30
想起来了...

01星球-云海学长 10:53:40
time(0)改成time(null)试试

01星球-云海学长 10:54:26
time(0)好像是最开始的时间  1970

一念白发I 10:54:33


一念白发I 10:54:36
也不行

01星球-云海学长 10:54:41
奇怪了

01星球-云海学长 10:54:44
代码发我一份吧

01星球-云海学长 10:54:46
我这边运行看看

一念白发I 11:00:58


对方已成功接收了你发送的离线文件“random.zip”(629.52KB)。

01星球-云海学长 11:21:30


01星球-云海学长 11:21:45
估计是编译器的优化吧  短时间内获取的毫秒值都是同一个

01星球-云海学长 11:22:00
也就导致随机数种子是同一个

01星球-云海学长 11:22:08
于是随机数也就相同了

一念白发I 11:33:36
那有啥解决办法没?或者有没有其他的随机数函数

01星球-云海学长 11:46:11
循环调慢一点就好  或者说一次程序运行只生成一个毫秒值

01星球-云海学长 11:46:31
比如 把这个srand 挪到main的第一行

01星球-云海学长 11:46:33
就解决了

01星球-云海学长 11:46:48
一个随机数种子可以用到天荒地老

一念白发I 11:48:12
nice

一念白发I 11:48:30
解决了

 

 

 

 

 

 

 

标签:11,10,01,云海,srand,学长,关于,随机数,星球
来源: https://blog.csdn.net/yinianbaifaI/article/details/121727337