我需要找到生成3个随机数的算法,但要满足以下条件:
1)|part1| +|part2|+|part3|=< SumConst
,其中SumConst是偶数,SumConst不是大数(0< SumConst< 13
)
2)每个部分-1*SumConst=< part =< SumConst
3)part1 +part2+part3=0
一些例子:
SumConst=2
-1,1,0;
SumConst=10
-5,5,0 ; -2,-3,5; -4,-1,5 ...
答案 0 :(得分:0)
由于您的条件非常有限,因此生成一个包含给定sumConst
的所有有效可能性的表格可能更容易。然后,您可以轻松地随机选择其中一个。在一些预处理和一些空间的交易中,每次查找都会更快。
伪代码生成列表(未检查错误,只是一般概念):
for a = -sumConst to sumConst
bMax = sumConst - |a|
for b = -bMax to bMax
c = -a - b
if |a| + |b| + |c| <= sumConst
add (a,b,c) to list