一念白发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
解决了