1

我正在尝试随机生成两个整数,它们相加为先前选择的整数。

例如,如果我有一个先前选择的 值12,我需要一个可以生成[6,6]、 或[11,1]等的方法。

4

4 回答 4

5

a获取一个介于 0 和您之前选择的值 ( ) 之间的随机数(调用它sum)。减去a得到。sum_ b返回[a, b]

于 2013-01-28T22:24:01.940 回答
3

编辑:看到这个答案

只是为了好玩(我敢肯定它不是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] 
于 2013-01-28T22:36:52.883 回答
1

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

def random_add(sum)
  num = rand(sum)

  [num, sum - num]
end

1.upto 100 do |i|
  p random_add(20)
end
于 2013-01-28T22:31:17.590 回答
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]

谢谢!

于 2013-01-28T22:27:21.253 回答