基本上我正在生成数字,它们不能等于我生成的任何其他数字。有没有更快的方法来做到这一点,因为它看起来有点荒谬。
谢谢
#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
答案 0 :(得分:6)
对于Ruby 1.9 +
(0..6).to_a.sample(x)
或旧版本
(0..6).to_a.shuffle.take(x)
其中x
是您要采用的整数数。由于rand(7)
不包含数字7,因此您需要的范围比您传递给rand
的数字少一个。
显然,您不能使用比该范围更多的数字。