我有一个固定的几何序列号,范围从1到64 (1,2,4,8,16,32,64)
,我需要从它们中创建一个N
个数字的随机列表 - 每个数字和另一个列表的重复比例相等比例不平等。
我应该怎样做才能首先创建N
个数字列表?到目前为止,我已经编写了以下代码 - 考虑N = 21
。
# When N = 21
import random
population = [1,1,1,2,2,2,4,4,4,8,8,8,16,16,16,32,32,32,64,64,64]
def sample_wr(population, k):
# "Chooses k random elements (with replacement) from a population"
n = len(population)
_random, _int = random.random, int # speed hack
result = [None] * k
for i in xrange(k):
j = _int(_random() * n)
result[i] = population[j]
return result
Random_Sample = sample_wr(population, 21)
print(Random_Sample)
答案 0 :(得分:0)
好吧,您可以将“比例代表”代码简化为
from random import choice
def sample_wr(population, k):
return [choice(population) for _ in range(k)]
如果你想要不相等的比例,你必须定义你做想要的比例。
答案 1 :(得分:0)
首先,我会使用shuffle
。
def balancedsample(population, k):
population = (population * math.ceil(k/len(population)))[:k]
random.shuffle(population)
return population
这只是根据需要多次乘以填充列表以获取足够的元素,如果k
不是len(population)
的完美倍数则截断,并将结果混洗。
对于第二个,我会按照Hugh suggests的方式进行。