前向随机数的概率分布

wer*_*len 6 random algorithm probability

假设我伪随机地从每秒1到50伪随机选择一个数字,持续100秒,随着时间的推移,选择的数字更可能更大.我怎么能构建这样的算法?

例如:在99秒之后,选择接近50的数字的概率比选择接近1的数字的可能性要大得多.

或者:10秒后挑选的数字更可能大于9秒后挑选的数字

Kar*_*ath 5

选择任何凹面单调函数,如平方根,将0到0和1映射到1.在[0,1]之间生成一个随机数,应用函数,然后将[0,1] scretch到所需的间隔([1,50] ).

现在,如果您从线性变换f(x)= x变换到提到的变换函数,例如使用简单的加权,您将获得所需的效果.


TMS*_*TMS 4

我有一个简单的解决方案给你。而不是rand(1, 50)(假设该函数生成均匀随机数 1..50)使用以下表达式:

power(rand(1, power(50, exp)), 1/exp)
Run Code Online (Sandbox Code Playgroud)

这仍然会给你所有的数字 1..50。对于exp = 1,分布将是均匀的。当你稍微增加exp(例如1.1左右)时,获得更大数字的概率将会增加。exp越高,它会增加得越多,接近50。

所以你可以这样做,例如:

factor = 1 /* finetune this for your needs */
for second = 0..100
    exp = 1 + (second / 100) * factor
    rand_num = power(rand(1, power(50, exp)), 1/exp)
endfor
Run Code Online (Sandbox Code Playgroud)