获取随机零件的算法

时间:2013-10-08 17:08:54

标签: algorithm

我需要找到生成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 ...

1 个答案:

答案 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