在Ruby中生成与其他数字不相等的数字?

时间:2014-12-08 22:07:47

标签: ruby random numbers

基本上我正在生成数字,它们不能等于我生成的任何其他数字。有没有更快的方法来做到这一点,因为它看起来有点荒谬。

谢谢

#possible generated values
x1 = 0
x2 = 1
x3 = 2

#generate co-ordinates
x4 = rand(7)
until x4 != x1 && x4 != x1+1 && x4 != x1+2 && x4 != x2 && x4 != x2+1 && x4 != x2+2 && x4 != x3 && x4 != x3+1 && x4 != x3+2 do
  x4 = rand(7)
end

#possible generated values
y1 = 0
y2 = 1
y3 = 2

y4 = rand(7)
until y4 != y1 && y4 != y1+1 && y4 != y1+2 && y4 != y2 && y4 != y2+1 && y4 != y2+2 && y4 != y3 && y4 != y3+1 && y4 != y3+2 do
  y4 = rand(7)
end

1 个答案:

答案 0 :(得分:6)

对于Ruby 1.9 +

(0..6).to_a.sample(x)

或旧版本

(0..6).to_a.shuffle.take(x)

其中x是您要采用的整数数。由于rand(7)不包含数字7,因此您需要的范围比您传递给rand的数字少一个。

显然,您不能使用比该范围更多的数字。