Algorithm 随机零件的获取算法

Algorithm 随机零件的获取算法,algorithm,Algorithm,我需要找到生成3个随机数的算法,但要满足以下条件: 1) |第1部分|+|第2部分|+|第3部分|=

我需要找到生成3个随机数的算法,但要满足以下条件:

1)
|第1部分|+|第2部分|+|第3部分|=
,其中sumcont是偶数,sumcont不是大数(
0

2) 对于每个部分
-1*sumcont=

3)
part1+part2+part3=0

一些例子:

SumConst=2

-1,1,0; 

SumConst=10

-5,5,0 ; -2,-3,5; -4,-1,5 ...

由于您的条件非常有限,因此可能更容易为给定的
sumcont
生成一个包含所有有效可能性的表。然后,您可以轻松地随机选择其中一个。每次查找都会更快,但需要一些预处理和一些空间

生成列表的伪代码(未检查错误,只是一个一般概念):

对于a=-sumcont到sumcont
bMax=sumconts-| a|
对于b=-bMax到bMax
c=-a-b

如果| a |+| b |+| c |生成随机数直到它们符合条件?(或者随机生成前两个,并从第二个条件中导出第三个条件。)如果编写一些“特殊”随机数算法,它们可能不会非常随机。条件3非常强。事实上,您只有两个随机数,然后确定第三个。由于您非常受限,您可以为每个
sumcont
创建一个可能性表。然后从中随机挑选一个。@Geobits,我对这个方法很感兴趣。您知道获取可能数表的算法吗?要生成可能数表,只需编写两个嵌套循环
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