基本上我正在生成数字,它们不能与我生成的任何其他数字相等。有没有更快的方法来做到这一点,因为它看起来有点荒谬。
谢谢
#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
最佳答案
对于 Ruby 1.9+
(0..6).to_a.sample(x)
或旧版本
(0..6).to_a.shuffle.take(x)
其中 x
是您要取的整数个数。由于 rand(7)
不包括数字 7,因此您的范围需要比传递给 rand
的数字小 1。
很明显,您不能取比范围内更多的数字。
关于ruby - 在 Ruby 中生成不等于其他数字的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367903/