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

时间:2015-03-29 22:16:53

标签: python random sequence

我正在尝试做一些基本的事情 - 使用范围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个数字。

1 个答案:

答案 0 :(得分:1)

我认为这是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)

也一样。