有一些算法可以生成随机数字,如:
number = (previous_number * constant + other_constant) mod third_constant
用于精心选择的常量。 但我需要算法来生成0到n-1范围内的随机整数。 (显然没有运行循环并获得计数器,我需要随机性)。这怎么可能?谢谢。
答案 0 :(得分:2)
使用third_constant = n
乘法和加法运算会给你一些数字,然后当你执行mod时你得到一个从0到third_constant -1的整数,所以只需使用n作为third_constant就可以了。
答案 1 :(得分:0)
这是通过生成范围[0,1)
中的伪随机数(大多数语言中存在)来实现的,然后:
r = rand()
res = floor(rand*m)
在[0,1)
中生成随机数的一种方法是在[0,MAX_RAND)
中生成随机整数,并除以MAX_RAND
。
你也可以使用[0,MAX_RAND]中的随机int生成(让它为r
,然后返回r % m
- 但如果MAX_RAND
不大于m
,请注意偏差{{1}}(2-3级)