我正在尝试随机生成两个整数,这些整数加起来先前选择的整数。
例如,如果我之前选择了12
的值,我需要一种可以生成[6,6]
或[11,1]
等的方法。
答案 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]
谢谢!