2016-12-08 6 views
0

ファイルの各レコードに3つのメッセージの1つを割り当てるアルゴリズムを実行するように求められました。ランダムに特定のパーセンテージレート要件を持つフラグを割り当てます。

クライアントは、私はそれが2回目のループの原因となるので、ファイルの末尾までをループにしたくない Message 1-- selected for 80% times of total 3 message randomly. Message 2-- selected for 10% times of total 3 message randomly. Message 3-- selected for 10% times of total 3 message randomly. をしたいと、ファイルは非常に大きく、2回ループするプログラムを変更することも困難である

同じように。

だから、私は10の整数1の配列を作成し、それらをシャッフルして、順次ラインインデックスに従って対応する配列の要素にレコードのマッサージフラグ値を割り当てるだろうと考えています。それは10レコードごとに繰り返されます。例えば

、シャッフル配列

[9,6,10,2,7,8,4,5,1,3]

以下のような私のファイルは以下のようになってしまったことになる場合:それは1〜8の間で選んだ場合、私は割り当て、その後、メッセージ1を割り当てます Line 1 , pick 9 Line 2 , pick 6 Line 3 , pick 10 Line 4 , pick 2 Line 5 , pick 7 Line 6 , pick 8 Line 7 , pick 4 Line 8 , pick 5 Line 9 , pick 1 Line 10, pick 3 Line 11, pick 9 Line 12, pick 6 Line 13, pick 10 Line 14, pick 2 Line 15, pick 7 Line 16, pick 8 Line 17, pick 4 Line 18, pick 5 Line 19, pick 1 Line 20, pick 3

メッセージ9が選択された場合はメッセージ2、メッセージ10が選択された場合はメッセージ3が表示されます。

動作しているとは限りませんが、あなたは20行に私のライン11はライン10に正確に

を1行目を繰り返している見ることができますが、私は見ていないそれを超えるとアルゴリズムを持つ任意の問題を知っていますか、あなたは、私が使用することができ、既存のアルゴリズムが存在するかどうかを知っています助言を歓迎します。

あなたのお手伝いをお待ちしております。

+0

はちょうどより多くの乱数を生成するからあなたを停止するものですか?言い換えれば –

答えて

0

代わりにこの配列を作成する、乱数発生器を使用します。メッセージ1を0〜0.8、メッセージ2を0.8〜0.9、メッセージ3を0.9〜1.0の値に割り当てます。例えば

var rand = Math.random(); 
if (rand >= 0 && rand < 0.8) { 
    ... code to assign Message 1 ... 
} else if (rand >= 0.8 && rand < 0.9) { 
    ... code to assign Message 2 ... 
} else if (rand >= 0.9 && rand < 1.0) { 
    ... code to assign Message 3 ... 
+0

は、(GRIN)返信用 –

+0

感謝「を多くの乱数発生器は、魔法で...既にあなたのためのシャッフルこれらの数字を維持します」。しかし、申し訳ありませんが、私は各行のメッセージコードに何を割り当てるべきか分かりません。 – yangbin990

関連する問題