解答:dom
抽籤,5我的抽取5根籤,只有一個籤爲中籤。每一個人機率爲1/5. 隨機數
將這n個元素依次遍歷,每次獲得的數(第L個)取隨機數r,r%L==0(0-L以內)file
var pickOne(file){遍歷
int lenth = 1;while
while(lenth <= file.size){return
if(random()%lenth == 0){
pick = file[lenth];
}
lenth++;
}
return pick;
}
1,2,3,4,5,6,7
第一個數:pick = 1 機率100%;
第二個數:pick被替換爲第二個數的機率爲1/2,前面的數選到機率爲1/2
第三個數:pick被替換爲第三個數的機率爲1/3,前面的數選到機率爲1/2*(1-1/3)
第四個數:pick被替換爲第四個數的機率爲1/4,以前機率爲1/3*(1-1/4)
。
。
。
第n個數:pick被替換爲第n個數的機率爲1/n