我有一个函数可以给我随机位 rand(0,1),我想将其推广到 rand(a,b) ,使其在范围 a 到 b 中生成随机数。
我的想法是计算 b-a 的位数,然后将它们连接起来。我认为这会起作用,但它不会是均匀的。我觉得它会倾向于更大的数字,而不是更小的数字(接近 a 的数字)。并不是要直接回答问题,只是希望得到一些帮助。
编辑: 这是我目前的想法,只是不确定均匀性部分。
我的想法是计算 b-a 的位数,然后将它们连接起来。我认为这会起作用,但它不会是均匀的。我觉得它会倾向于更大的数字,而不是更小的数字(接近 a 的数字)。并不是要直接回答问题,只是希望得到一些帮助。
编辑: 这是我目前的想法,只是不确定均匀性部分。
pseudo code:
function rand_range(a, b):
n = b - a
sum = a
for i in range(n):
sum += rand(0,1)
return sum
rand(a,b)
返回介于整数a
和b
之间的整数吗? - Nishanth(b-a)/2
。但是使用随机位生成器时,你生成00000
和01101
或任何其他5位序列的可能性是相同的。 - Jim Mischel