我在爲我的問題考慮算法時遇到了一些麻煩。我會盡力解釋我能做到的最好。這只是一個例子。算法需要幫助
所以說1000個人中的3%點擊了一個鏈接。
所以我需要一個算法,可以在1000個視圖中隨機分佈點擊。
它很容易均勻分佈,例如:1000 * .03 = 30,因此每30個視圖有人會點擊一個鏈接。
EG:
For (i = 0; i<1000; i++) {
if(i % 30 == 0);
click()
}
我在爲我的問題考慮算法時遇到了一些麻煩。我會盡力解釋我能做到的最好。這只是一個例子。算法需要幫助
所以說1000個人中的3%點擊了一個鏈接。
所以我需要一個算法,可以在1000個視圖中隨機分佈點擊。
它很容易均勻分佈,例如:1000 * .03 = 30,因此每30個視圖有人會點擊一個鏈接。
EG:
For (i = 0; i<1000; i++) {
if(i % 30 == 0);
click()
}
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-26 23:46:11
哦。是的,這是真的。如果'NUM_CLICKS * 0.03'或'NUM_CLICKS * 0.97'不是一個整數,則需要考慮這一點。 – 2013-03-26 23:47:30
您是否需要實際30次點擊或者只是一個統計分佈,平均每1000次提供30次點擊?如果統計分佈是你需要的,那麼就做if (Math.random() < 0.03)
。如果您只需要30次點擊,那麼最簡單的方法是選擇0到999之間的30個隨機數,確保沒有重複項,然後單擊這些索引。
點擊發生在任何特定視圖上的概率是多少?你將如何生成一個隨機二元變量,其概率是1? – 2013-03-26 23:37:03
您希望結果的期望值爲1000的3%,還是爲3%? – 2013-03-26 23:38:43
這將是任何數量的3%。 – Jedigasm 2013-03-26 23:39:38