ruby - 在 Ruby 中生成不等于其他数字的数字?

标签 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

最佳答案

对于 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/

相关文章:

mysql - 为什么 Rails 将 TEXT 列截断为 65535 个字符?

mysql - 关于mysql执行顺序1和raid(1)?

python - 与 random.seed() 一起使用的建议种子值是多少?

javascript - 显示元素列表中的元素

python - python中的数字金字塔

java - 在传统编程语言上使用不同的数字系统

c# - 转换大数,从 Base 256 到 Base 10

ruby - 在 Rails 中订购模型记录

ruby - 以对同一对象进行连续 Ruby 评估的方式构建

ruby-on-rails - 这两个陈述之间有什么区别,您为什么会选择它们?