以前に選択した整数を合計する2つの整数をランダムに生成しようとしています。
たとえば、以前に選択した値がある場合、、、などを12
生成できるメソッドが必要です。[6,6]
[11,1]
a
0と以前に選択した値()の間の乱数(と呼びます)を取得しますsum
。から減算a
しsum
て取得しますb
。戻り[a, b]
ます。
編集:この回答を参照してください
楽しみのためだけに(ネガなどは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]
乱数を生成し、指定された数からそれを減算します。
def random_add(sum)
num = rand(sum)
[num, sum - num]
end
1.upto 100 do |i|
p random_add(20)
end
試す:
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]
ありがとう!