从具有条件的列表中随机 select 个数字

Randomnly select numbers from a list with a condition

我有一个list(range(30000))。我需要在其中随机 select 个数字,这样,它总共需要一定数量的数字,例如 'n' ,同时它应该在两个索引位置之间采用 'k' 个值。

例如:

a = [1,2,3,4,5,,6,7,8......20,21,22......88,89.....30k]

我总共需要 select 5000 个数字。 'x' 0th index to 100th index 之间的数字,'y' 100 to 200 之间的数字等等

没有硬性规定它应该 select 5000 自己编号。但它应该肯定位于 0-100, 100-200

之间

我看到了random.choice但是如何给它一个条件

为了准确地提出问题:我需要 50 来自 0-100,200-300 etc.

的数字

这是解决此问题的一种方法:

import random
# define the sample size of each interval
# or for your specific case generate a sequence
# that adds up to 5000
size = [5, 2, 10]
n = 300
step = 100

# iterate over both a range (or sequence) and size
# and take random samples accordingly
out = [random.sample(list(range(i-step,i)), k) 
               for i, k in zip(range(step, n+step, step), size)]

print(out)
[[6, 86, 96, 62, 53], [115, 176], [245, 259, 297, 249, 225, 281, 264, 274, 275, 206]]

这是一个简单的脚本,可以完全满足您的要求。

import random
a = 0
b=100
l = list()
for z in range(149):
    a = a+200
    b = b+200
    for x in range(50):
        l.append(random.randint(a,b))