gpt4 book ai didi

c - 如何在 C 中获得足以进行统计模拟的伪随机均匀分布整数?

转载 作者:行者123 更新时间:2023-12-03 03:41:20 27 4
gpt4 key购买 nike

我正在编写蒙特卡洛模拟,并且需要大量随机位来生成均匀分布在 {1,2,...,N} 上的整数,其中 N<40。使用 C rand 函数的问题是,使用标准 rand % N 技术会浪费很多完美的位。生成整数的更好方法是什么?

我不需要加密安全的随机数,但我不希望它们扭曲我的结果。另外,我不认为从 random.org 下载一批比特是一种解决方案。

最佳答案

rand % N 不起作用;除非 RAND_MAX + 1N 的倍数,否则它会扭曲您的结果。

正确的做法是找出N中小于RAND_MAX的最大倍数,然后生成随机数,直到小于该值。只有这样你才可以进行模运算。这将为您提供 50% 的最坏情况拒绝率。

关于c - 如何在 C 中获得足以进行统计模拟的伪随机均匀分布整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10690839/

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