1

以前に選択した整数を合計する2つの整数をランダムに生成しようとしています。

たとえば、以前に選択した値がある場合、、、などを12生成できるメソッドが必要です。[6,6][11,1]

4

4 に答える 4

5

a0と以前に選択した値()の間の乱数(と呼びます)を取得しますsum。から減算asumて取得します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 に答える