2017-05-27 8 views
1

新しいRaindropオブジェクトを作成してリストに挿入できるループを含むメソッドを作成しようとしています。各Raindropオブジェクトには、雨滴のZインデックスを表すintをとるコンストラクタがあります。ループを反復し、数値を不均等に分配します。より低い範囲に多く、より低い範囲にもっと

今、問題は、より高いzインデックスよりも低いzインデックスでより多くのドロップを作成したいということです。同様の

10x Drops with index 20, 
20x Drops with index 19, 
30x Drops with index 18, 
40x Drops with index 17, 
... 
Most drops with index 10 

か何か:私はcreateRainDrops(500, 10, 20);を呼び出すと、私はこのような何かを期待する

public void createRainDrops(int amount, int startIndex, endIndex) { 

    for (int i=0; i<=amount; i++) { 
     //what goes here? 
     dropList.add(new Drop(zIndex)); 
    } 
} 

私はこの方法を持っています。私は自分の頭に正確なアルゴリズムを持っていないし、スプリットを正確に行うべきでもない。より高いzindexよりもちょうど、より低いzindexで低下します。

助けてください。

+0

ものはちょっと問題が解決されます。その研究はしばしば役に立ちます。 – GhostCat

+0

私は何を探すべきか分からなかった。 「ランダム加重選択」という言葉は私にとっては馴染みのないものでしたが、今私は知っています。御時間ありがとうございます。 –

+0

あなたは大歓迎です。まだうまく書かれた質問! – GhostCat

答えて

0

完全に分布している場合は、単純にその値を重みとして使用します。

私が出現する位置のインデックスの項目のためのチャンス[i]は/合計(Jそれから私は

インデックスのために[i]が出現して、与えられた発生することがありましょう=テキストの低下の総量Iの要素){出現[J]}

あるいは、擬似コードで:

given occurence 
initialize probability as array of size of occurence 
compute sum s of all members of occurence 
assign probability[i] = occurence[i]/sum 

for every drop to create: 
    generate number rand as random in 0..1 
    initialize probsum = 0 
    for every index 
     probsum += probability[i] 
     if rand < probsum 
     create drop with the current index as argument 
関連する問題