Cha*_*oir 2 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
Run Code Online (Sandbox Code Playgroud)
适用于Ruby 1.9+
(0..6).to_a.sample(x)
Run Code Online (Sandbox Code Playgroud)
或旧版本
(0..6).to_a.shuffle.take(x)
Run Code Online (Sandbox Code Playgroud)
x
你想要的整数数量在哪里.由于rand(7)
不包括数字7,您需要的范围比您传递的数字少一个rand
.
显然你不能拿出比这个范围更多的数字.