从具有条件的列表中随机 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))
我有一个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))