Ruby:在少于一个元素的范围内生成随机数

时间:2016-01-17 19:42:20

标签: ruby

伙计,

我试图在(0..10)之间生成一个随机数,比如5。

new_index = rand(0..(old_index - 1)) || new_index = rand((old_index + 1)..10)

任何人都可以放弃任何光明吗?

1 个答案:

答案 0 :(得分:1)

new_sample_space = (0..10).to_a - [5] #=> [0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
new_index = new_sample_space.sample #=> random integer from 0-10, except 5

当然,由于内存问题,在大范围内执行此操作可能不是一个好主意。在这样的"巨大的"在你获得5后,你可能会得到另一个随机数。

loop do
  new_index = rand(1..10)
  break if new_index != 5
end