本文用matlab程序,模擬微信給10個人發紅包,設定次數1億次,統計每個人搶到的紅包,最佳手氣和最差手氣次數,用以分析紅包是應該先搶還是後搶?
算法
網上有人分析微信紅包用的方法是兩倍均值法,意思即:每個人搶的額度為0.01到總額度除以剩餘人數的兩倍。本文用此方法來判斷,
假定有10個紅包共100元,此時均值為10,第一個人(設定為P1)搶到的值為0.01-20元內任意值。設P1搶到12元;此時還剩下9個紅包共88元,此時均值為9.77,第二個人P2搶到的值為0.01-19.55元內任意值。設P2搶到3元;此時還剩下8個紅包共85元,此時均值為10.625,第三個人P3搶到的值為0.01-21.25元內任意值。依次計算下去,到第9個人搶完後,剩下錢的全是最後一個人的。代碼實現
本次計算,設定每次發10個紅包,共100元。首先生成三個矩陣用以存放紅包值、手氣最佳次數、手氣最差次數。redluckymoney是我能想到紅包最好的翻譯了再進行計算,先進行內循環,發10個紅包,統計手氣最佳和手氣最差,再進行外循環100000000次。最後是畫圖,單次搶到的錢數,如果你的電腦牛X的話,可以放到外循環中,展示動態。但計算速度會大大降低,1億次計算時間會很長long long long……
統計結果
統計出來,每個人總搶到的錢數如下圖,總錢數基本一致,意味著無論先搶到,還是後搶到,經過多次後,搶到的錢是一樣的。
手氣最佳和手氣最差如下圖:總體來看,最後搶的兩位容易獲得手氣最佳,也容易獲得手氣最次差,更有可能是啥也搶不到……
總結
無論是先搶還是後搶,在足夠多次情況下,搶到的錢數是一樣的。越向後,越容易手氣最佳或手氣最差。在保證能搶到紅包的情況下,如果想手氣最佳,就後搶。