說我有10個獎給100人。每個人每次都有一個鏡頭。所以如果第一個人沒有贏得獎品,那麼概率就會上升,99年有10個,所以有一個......所有10個獎項都必須去。隨機概率選擇
什麼會以這樣的方式來寫這篇文章,通過是否存在仍留有一個獎結束後,這個人將有一個1 1機會獲得獎品的最佳途徑......
什麼我是這樣想的:
int playersLeft = 100
int winners = 0
while (winners < 10)
winners += (random.Next(playersLeft--)<(10-winners)) ? 1 : 0;
我想知道是否有更好或更直接的方法來做到這一點。我知道這似乎很簡單,但這個簡單的任務是應用程序非常重要的一部分,它必須是正確的。
澄清:爲什麼我想要做這樣的事情:
在現實中的玩家數量不限,每個Y中概率X取勝,說10/100 = 10%。然而,如果我將它留給隨機數生成器,那麼在100名玩家中,只有9人會獲勝,或者最差的是11人。在我的應用程序中,我必須保證每100人中不會有不少於10人贏得。
你知道嗎,如果你這樣做,會有更好更糟的時刻加入遊戲? –
@obrok - 是的,我知道。但任何其他方式,我必須根據情況操作它。例如,如果沒有贏得價格,則每X個玩家強制一個贏家,或者如果所有價格都已贏取,則應指定在遊戲期間不能再有贏家。這就是爲什麼我想要均勻分攤整個比賽的勝利者。假設有1000名玩家,確保前100名有機會比過去100名有所提高。與900名玩家提供所有價格相反,所以最後100名玩家有機會獲得0名玩家。我不知道我是否清楚自己。 – AJC
不可能等到100名玩家到達並分發獎品,是嗎? –