10%的概率生成一个随机数,否则生成0

Generate a random number 10% of the time, otherwise generate 0

在 Python 中,我想创建一个分布,在 10% 的时间内选择 5 到 10 之间的随机数。其他 90% 的时间,我希望它选择零。

我想采样 10,000 个数字。

您可以使用 numpy.random.choice:

import numpy as np

nums = list(range(5, 10+1))
# [5, 6, 7, 8, 9, 10]

out = np.random.choice([0]+nums, p=[.9]+[.1/len(nums)]*len(nums), size=10000).tolist()

值分布:

备选

其他方法,如果您想要正好 90% 的 0,其余部分分成完全相同的每个值,并且顺序需要是随机的:

nums = list(range(5, 10+1))
out = nums*1000+[0]*9000

import random 
random.shuffle(out)