Ruby:生成添加到另一个数字的随机整数

时间:2013-01-28 22:20:20

标签: ruby random

我正在尝试随机生成两个整数,这些整数加起来先前选择的整数。

例如,如果我之前选择了12的值,我需要一种可以生成[6,6][11,1]等的方法。

4 个答案:

答案 0 :(得分:6)

在0和之前选择的值(a)之间获取一个随机数(称之为sum)。从a减去sum以获得b。返回[a, b]

答案 1 :(得分:3)

修改:请参阅此answer

只是为了好玩(我确定这不是100%的否定等......):

class Fixnum
  def rand_sum(n = 2)
    arr = (n - 1).times.reduce([]) do |a, _|
      curr_max = self - a.reduce(0, :+)
      a << rand(0..curr_max)
    end

    arr << self - arr.reduce(0, :+)
  end
end

 11.rand_sum
 => [6, 5] 
 23.rand_sum 3
 => [10, 6, 7] 
 11.rand_sum 3
 => [6, 2, 3] 

答案 2 :(得分:1)

生成随机整数,然后从给定数字中减去它。

def random_add(sum)
  num = rand(sum)

  [num, sum - num]
end

1.upto 100 do |i|
  p random_add(20)
end

答案 3 :(得分:0)

尝试:

previously_selected = xx
a = rand(previously_selected)
[a, previously_selected-a]

xx是任何数字。

示例:

>> previously_selected = 213
=> 213
>> a = rand(previously_selected)
=> 122
>> [a, previously_selected-a]
=> [122, 91]

谢谢!