gpt4 book ai didi

random - rand() 函数有多随机?

转载 作者:行者123 更新时间:2023-12-05 01:32:03 24 4
gpt4 key购买 nike

更具体地说,我的问题是,给定无限时间 int(rand()*1000) 最终会命中 0 到 999 之间的每个数字吗? 10^4、10^5 怎么样...我想一旦你达到内存中的大小它肯定会中断,即如果 rand() 返回一个 float ,也就是说内存中的 n 位,你不可能达到更多比 n 个不同的整数,所以一旦你到达 rand()*(2^n+1),你肯定会错过一些。

最佳答案

是的,给定无限时间它会击中你范围内的每个数字,前提是它有无限期;一旦再次达到种子值,序列就会重复。当然,正如您提到的那样,您会限制 rand() 返回值的精度,最终您会遇到一个断点,它无法映射到足够大范围内的每个整数。但是,如果您考虑具有无限精度和周期(您提出了无穷大)的理论计算机,那么您将在给定无限时间的情况下命中指定范围内的每个数字。

但是,rand() 使用的 LCG 不会为您提供均匀分布的数字。也就是说,你会以比其他人更高的频率获得一些数字(尽管无限时间你会击中所有因为无穷大就是那么酷)。如果您需要均匀分布,请使用 Mersenne Twister 算法之类的算法。 Boost 库中有一个随机生成器,它具有 Mersenne Twister 并且易于实现。

关于random - rand() 函数有多随机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5913662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com