我正在尝试随机生成两个整数,它们相加为先前选择的整数。
例如,如果我有一个先前选择的 值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]
谢谢!