首页 > 解决方案 > 从有条件的列表中随机选择数字

问题描述

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

例如:

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

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

没有硬性规定它应该5000自己选择数字。但它应该肯定介于0-100, 100-200等之间。

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

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

标签: pythonlistrandomchoice

解决方案


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

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]]

推荐阅读