2017-03-28 6 views
-2

の数字の配列に等しいです。アルゴリズムを作成する方法を見つける必要があります。これは、各数値が0.25((0.4 + 0.3 + 0.2 + 0.1)/ 4 = 0.25から)であり、できるだけ速くしようとしています。アレイ内の各番号の値を別の番号に引き抜く。Javascriptを私は乱数を含む配列を有する最短方法

したがって、この例のために最短の方法はEqualMeから撤退するであろう[0] EqualMeに0.15の値を[3]とEqualMeから0.05の値を撤回[1]でEqualMe [2]ので、各番号に配列は同じ(0.25)になります。

私の質問は、配列のサイズが与えられた選択肢(4つの数字だけでなく)であり、配列の値が完全にランダムである場合に、値を取り下げる最短の方法を見つけることができる、その数字は最低限の引き出しと完全に等しくなりますか?

注意してください。 を私はので、私は別の に1人の財布からお金を引き出す必要があり、私は料金 を失い、私は別の財布からお金を引き出すたびに財布 をビットコインのためのプログラムを交換するお金のためにそれをコーディングする必要があります可能撤回の最低額ですべての財布は、合計金額を与えると同じ値を持つことになりますので、

+2

あなたは何を試してみましたか? – Weedoze

+1

したがって、各要素を平均値で置き換えたいですか? – hindmost

+1

私たちはあなたの宿題をするつもりはありません。 – epascarello

答えて

0

EDIT: 私は、一連の数値の平均値を見つけると比較して、これらのそれぞれに違いを計算します最大の違いによってそれらの数と並べ替え、 nはそれらの値をそれぞれ平均値に等しくなるように分割し始める。最大の違いを1つ1つマッチングさせています(残りの部分を次の行の項目に送ります)

========
例1:0.4,0.3,0.45,0.25 (平均値0.35)

差は0.1(0.25)、-0.1(0.45)、0.05(0.3)、-0.05(0.4)となり、2つのトランザクションだけですべての値が0.35になります。
1トランザクション = 0.45 FROM、移動 - 0.1 0.25 = 0.35両方
2トランザクション = 0.4 FROMため、移動-.05 0.3 = 0.35両方

ため======= =
例2: 0.32、0.47、0.12、0.56(順にソート)(平均= 0.3675)

相違0.2475(0.12)、-0.1925(0.56)、0.1025(0.47)、0.0475(0.32)
最初のトランザクション = FROM 0.56、0を移動します。 1925年0.12(今等しい0.3125まで)
2トランザクション = 0.47 FROM、0.0550(0.3675に等しい今)0.12
3トランザクション = 0.47との間で移動0.3675 ​​

に等しい今0.32(に0.0475を移動

平均値と平均値を比較すると運が増えることもありますが、どちらのテストでも最小のトランザクションを使用してテストし、最小のトランザクションでテストします。

オリジナル
これをプログラムで処理する代わりに、なぜ数学的ではないのですか?

たとえば、ランダムに数値を生成する場合、値を変更して0.25にすることができます。

ランダムな値の合計が1.4(0.4,0.3,0.45,0.25)の場合、0.25/1.4を〜0.17とし、各値に0.17を掛けて0.25を合計0.25にすることができます。

(X 0.17 0.4)+(0.3×0.17)+は、(0.45 X 0.17)+(0.25×0.17)=〜0.25

+0

ええ、唯一の問題は、私がそれを作る必要があるということです。 お金を交換するためには、 と私はお金を引き出すことによっていくつかの財布に等しくする必要があります 、毎回私は、最短の方法を見つけることも – Qu4terni0n

+0

だから、それぞれの値として0.25を得ようとしているのですか?または、この値はプログラムで渡されますか?あるいは、すべての値が同じになるように最小限のトランザクションを必要とする数にすぎませんか? – LegendaryJLD

+0

私は一緒にすべての数字を追加した場合 iは4つの財布 を持っており、それぞれが異なる値 を持っていますが、1つの財布を取得するために一緒にすべての数字を追加した場合 あなたは ビットコイン1の値を取得すると言うことができます合計値を持っています今は各ウォレットが異なる値を持っているからです(上記の例のように) ウォレットの値を1つのウォレットから別のウォレットに引き出すアルゴリズムを作る必要があります。問題は私がお金を引き出すたびに を失うので、アルゴリズムを使って可能な最低引き戻し方法を見つける必要があることです。 – Qu4terni0n

関連する問題