1

問題のアルゴリズムを考えるのに問題があります。できる限りのことを説明しようと思います。これは単なる例です。

つまり、1000人の3%がリンクをクリックしたとしましょう。

したがって、クリックをランダムに1000ビューに広げるアルゴリズムが必要です。

均等に広げるのは簡単です。例:1000 * .03 = 30なので、30ビューごとに誰かがリンクをクリックします。

例えば:

For (i = 0; i<1000; i++) {
if(i % 30 == 0);
click()
}
4

3 に答える 3

4

実際に30回のクリックが必要ですか、それとも平均して1000回あたり30回のクリックを提供する統計分布が必要ですか。統計的分布が必要なすべてである場合は、それを実行してくださいif (Math.random() < 0.03)。正確に30回のクリックが必要な場合、最も簡単な方法は、0から999までの30個のランダムな数字を選択し、重複がないことを確認して、それらのインデックスをクリックすることです。

于 2013-03-26T23:39:49.540 に答える
2

1000個の整数の配列を作成し、そのうちの30個を1に初期化し、残りの970を0に初期化してから、配列をランダムにシャッフルarray[index from 0 to 999]し、クリックが必要かどうかを確認するために使用することもできます。

于 2013-03-26T23:38:52.287 に答える
1
List<Boolean> wasclicked = new ArrayList<Boolean>();
for (int i = 0; i < NUM_CLICKS * 0.03; i++) {
    wasclicked.add(true);
}
for (int i = 0; i < NUM_CLICKS * 0.97; i++) {
    wasclicked.add(false)
}
Collections.shuffle(wasclicked);

これで、正確に3%が真であるブール値のランダムリストができました。

于 2013-03-26T23:42:56.757 に答える