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