我有一个循环,可以按用户输入的一定数量的组添加数字。
no_reps = @trial.number_of_repetitions
我正在寻找在no_reps
变量组中的一个和no_reps
变量之间输入一个随机数。
当前r.treatment_index = SecureRandom.random_number(1..no_reps)
的编号没有唯一性。值与范围匹配,但并非每个in_groups_of
唯一。
@trial.repetitions.in_groups_of(no_reps).each_with_index do |a, i|
a.each do |r|
r.repetition_index = i + 1
r.treatment_index = SecureRandom.random_number(1..no_reps)
end
end
答案 0 :(得分:3)
尝试#shuffle
预先填充的数组:
@trial.repetitions.in_groups_of(no_reps).each_with_index do |a, i|
treatment_indexes = (1..no_reps).to_a.shuffle
a.each_with_index do |r, j|
r.repetition_index = i + 1
r.treatment_index = treatment_indexes[j]
end
end
UPD::如果您注意速度:
treatment_indexes = (1..no_reps).to_a
@trial.repetitions.in_groups_of(no_reps).each_with_index do |a, i|
treatment_indexes.shuffle!
...