Ruby 生成递增随机数轨道

Ruby 生成递增随机数轨道,ruby,Ruby,我有一个随机数生成器代码: 5.times.map { [*0..9].sample }.join.to_i 它给我随机数,比如63832433734998。正如你们所看到的,它们是完全随机的,但如何使它们比我只会得到一个增加的方式?不是63832,42337,34998,而是34998,42337,63832(这只是一个例子,理想情况下我会得到smth,比如00[number]=>0025,其中25是生成的随机数 希望我的解释是可以理解的:)如果您有当前/最后一个随机数,只需向其中添加一个随

我有一个随机数生成器代码:

5.times.map { [*0..9].sample }.join.to_i
它给我随机数,比如
63832433734998
。正如你们所看到的,它们是完全随机的,但如何使它们比我只会得到一个增加的方式?不是
63832,42337,34998
,而是
34998,42337,63832
(这只是一个例子,理想情况下我会得到smth,比如
00[number]
=>
0025
,其中25是生成的随机数


希望我的解释是可以理解的:)

如果您有当前/最后一个随机数,只需向其中添加一个随机数即可生成一个更大的随机数,例如:

def generate(base = 0)
  base + rand(1_000..10_000)
end

number = generate          #=> 9635
number = generate(number)  #=> 17761
number = generate(number)  #=> 22082
number = generate(number)  #=> 31061

每个数字都比前一个数字大1000到10000。

如果要生成已知范围内的所有随机数,可以采用另一种方法:

然而,这仅在您希望提前获取所有随机数,而不是持续生成更大的新随机数时才起作用

如果您的上限非常大,这也不是一个好方法-例如,这将冻结您的系统并需要取消:

[*1..10000000000].sample(5).sort
…但在这种情况下,由于数字如此之大,你肯定可以避免发生碰撞的微小风险:

5.times.map{ rand(1..10000000000) }.sort
  # => [460188573, 555213355, 3576967759, 3994239233, 9570165205]

您试图解决的问题是什么?顺便说一句,您的示例代码相当于
rand(100_000)
您需要特定数量的排序随机数吗?或者您是否需要一个方法返回一个随机数,条件是它大于最后一个随机数?如果第一个随机数返回为99999怎么办?您希望您的方法下一步做什么?
5.times.map{ rand(1..10000000000) }.sort
  # => [460188573, 555213355, 3576967759, 3994239233, 9570165205]