搶紅包算法

搶紅包算法


搶紅包算法


搶紅包算法


搶紅包算法


搶紅包算法


發出一個固定金額的紅包,由若干個人來搶,需要滿足哪些規則?

1.所有人搶到金額之和等於紅包金額,不能超過,也不能少於。

2.每個人至少搶到一分錢。

3.要保證所有人搶到金額的幾率相等。

搶紅包算法


小灰的思路是什麼樣呢?

每次搶到的金額 = 隨機區間 ( 0, 剩餘金額 )

搶紅包算法


為什麼這麼說呢?讓我們看一個栗子:

假設有10個人,紅包總額100元。

第一個人的隨機範圍是(0,100元),平均可以搶到50元

假設第一個人隨機到50元,那麼剩餘金額是100-50 = 50 元。

第二個人的隨機範圍是 (0, 50元),平均可以搶到25元

假設第二個人隨機到25元,那麼剩餘金額是50-25 = 25 元。

第三個人的隨機範圍是 (0, 25元),平均可以搶到12.5元

以此類推,每一次隨機範圍越來越小。

搶紅包算法


搶紅包算法


方法1:二倍均值法

剩餘紅包金額為M,剩餘人數為N,那麼有如下公式:

每次搶到的金額 = 隨機區間 (0, M / N X 2)

這個公式,保證了每次隨機金額的平均值是相等的,不會因為搶紅包的先後順序而造成不公平。

舉個栗子:

假設有10個人,紅包總額100元。

100/10X2 = 20, 所以第一個人的隨機範圍是(0,20 ),平均可以搶到10元

假設第一個人隨機到10元,那麼剩餘金額是100-10 = 90 元。

90/9X2 = 20, 所以第二個人的隨機範圍同樣是(0,20 ),平均可以搶到10元

假設第二個人隨機到10元,那麼剩餘金額是90-10 = 80 元。

80/8X2 = 20, 所以第三個人的隨機範圍同樣是(0,20 ),平均可以搶到10元

以此類推,每一次隨機範圍的均值是相等的。



分享到:


相關文章: