生成小于给定整数n的正随机整数的算法

时间:2015-02-28 06:12:18

标签: algorithm random

有一些算法可以生成随机数字,如:

number = (previous_number * constant + other_constant) mod third_constant

用于精心选择的常量。 但我需要算法来生成0到n-1范围内的随机整数。 (显然没有运行循环并获得计数器,我需要随机性)。这怎么可能?谢谢。

2 个答案:

答案 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级)