生成范围内的随机数,直到在 python 中达到该数字的最大值

Generating random numbers in range until a max for that number has been met in python

我正在尝试做一些基本的事情 - 使用范围 0-4 并生成一个 36 数字序列,这样每个值都会生成 9 次。

var trial_init 只是一个包含 36 个零的数组。

我生成了:

trial_seq = []

for i in range(len(trial_init)-1):    
    while True:
        trial_val = random.choice(range(4))
        if (trial_seq.count(0) <=9 and trial_seq.count(1) <=9 and trial_seq.count(2) <=9 and trial_seq.count(3) <=9):
            break
    trial_seq.append(trial_val)

我想我不确定它为什么不起作用。

它应该生成一个数字 0、1、2 或 3,并且如果数字没有被包含在 trial_seq 数组中超过 9 次,它应该将它添加到 trial_seq数组,否则应该生成另一个数,直到生成36个数。

我假设这是 python。

您实际上可以采用另一种方式:生成一个索引集,然后将其中的索引随机分配给四个可能值中的每一个:

trial_seq = [0]*36
indices = range(36)
random.shuffle(indices)
for i in range(36):
    trial_seq[indices[i]] = i % 4;

编辑:天哪,有时候我很蠢:

trial_seq = [ i % 4 for i in xrange(36) ]
random.shuffle(trial_seq)

也一样。