选择子列表,其中每个元素有1.5%的可能性被包括在内

时间:2018-02-21 01:43:11

标签: python arrays numpy random sublist

     tmp = []
     while len(tmp) == 0:
         for i in range(0,385):
             # Multiplying by 100 in order to remove the decimal point
             if randint(0,10000) < chance*100:
                 tmp.append(i)
     return tmp

这是我目前用来帮助清理的代码。输出将是这样的。

[34, 234, 243, 321]

我目前的解决方案非常低效。我试过这个:

sample(range(0,385), math.ceil(chance*3.85))

但它不会产生同样的效果。另外,如果你能告诉我这个叫做什么的名字会很棒。

1 个答案:

答案 0 :(得分:1)

import numpy as np

n = 385
chance = 0.015  # Chance of 1.5%
main_list = np.arange(n)  # Generate initial list
rnd = np.random.uniform(size=main_list.shape)  # Generate random number between 0 and 1

sublist = main_list[rnd < chance]  # Select numbers