如何产生如下概率的随机数?0出1次,1出现2次,2出现3次,......,n-1出现n次?
万事不决,手写演算
比如我们有一个随机生成0-2的函数rand(3),size=3
第一次随机的结果可能是:0, 1, 2
第二次随机的结果可能是:0, 1, 2
如果两次结果相加,可能的结果是:0(1), 1(2), 2(3), 3(2), 4(1)。括号里面是结果出现的次数。
诶!是不是有感觉了,两次随机相加不就是我们要求的概率吗!
def random():
while 1:
a = rand(n)
b = rand(n)
if a +b < n:
return a+b