-2

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 ...
4

1 に答える 1

0

条件が非常に限られているため、特定のsumConst. その後、これらのランダムな 1 つを簡単に選択できます。いくつかの前処理と少しのスペースのトレードで、ルックアップごとに高速になります。

リストを生成するための疑似コード (エラーをチェックしていません。一般的な考え方です):

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
于 2013-10-08T17:26:25.003 に答える