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)
在 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)