2012-03-15 1 views
3

私はこの質問を理解するのは難しいと知っていますが、私はjavascriptの数学的方程式が必要です。固定平均を取得する可能性のある結果を得るにはどうすればよいですか?

I am having dynamic number from 0 to 7. 

今私が午前5つのレコード:

a = from 0 to 7, 
b = from 0 to 7, 
c = from 0 to 7, 
d = from 0 to 7, 
e = from 0 to 7 

は今、私は平均5

になる可能性の出力、B、C、D及びEを見つけることができ、そこから式を必要とします
Like for average = 5: 
1. a = 5, b = 5, c = 5, d = 5, e = 5 
2. a = 2, b = 7, c = 6, d = 5, e = 5 

ユーザーは希望の平均値を入力します。ユーザーは平均値を入力するために出力を投げる必要があります。

+0

ネストされたループですべてを試すことができるように、32768通りの組み合わせしかありません。 – assylias

+0

@assylias :(なぜなら私は一般的な数学関数を見つける必要があるのですから) –

+0

[ ://stackoverflow.com/questions/1490001/how-do-i-generate-integer-partitions) –

答えて

1

これは整数プログラミングに関連する問題のようです。動的計画法を使用することで比較的小さな問題の不変量を維持し、これらの問題を最終的な解にマージすることで、比較的効率的に解くことができます。 0..7

2)ここで、次の3回行う(I = 2の間

1)ランダムシード番号で起動し、X_1:ここでは、高レベルのあなたの目標にあなたを取得するアルゴリズムです、3、4):

3)最小限可能な次の番号を見つけます。あなたの5つの数字の平均を5にするには、5人のすべての目標合計は25です。だからあなたは25に到達する能力を否定しないようにする必要があります。だから、min_i + 1は0..7の最小数を決定させるように、すべてのX_Iの合計これまでプラスmin_i + 1 *(5-I)> = 25

:私が言います=今までの数字は4と5でした。そして最小許容第3の数字min_3は6です。これまでの合計は9と5-i = 3.9 + 3 * 6 = 27> = 25と9 + 3 * 5 = 24 < 25.これは、あなたがmin_3として5を選択した場合、あなたはもはや25

4の合計のあなたの目標を達成することはできないだろう意味)min_i + 1の間の乱数としてX_I + 1を選択します。および7。

5)最後に、x_5をx_1..x_5の合計として25を選択します。 x_1からx_5を出力します。全体アルゴリズムの


例:

はX_1 = 6

=> min_2 = 5、合計= 6

うX_2 = 5

レット

=> min_3 = 5、合計= 11

x_3 = 7とします。

=> min_4 = 4、和= 18

うx_4 = 5

=>和= 23

=> x_5 = 2(= 25から23)

出力:[6、5、7、5、2]確かに平均が5です。

このアルゴリズムは非常に偏った出力を生成しますよりランダムに、単に最終結果の順列を提供する。この例では、代わりに[5,7,2,5,6]を出力することができます。

Javascriptでこれを実装するのは問題ありません。また、x_iと総平均の他の可能な範囲に合わせて簡単に調整できます。最終的なサンプルサイズが平均で平均でnになる場合は、ターゲット合計をn * avgに変更してください。

関連する問題