python抽奖概率设计_通过python分析原神,结果出现了“这种情况”
最近迷上了原神這款游戲,趁著保研完,肝了兩個星期,也氪了一些金。先不談這款游戲可玩性有多高,但論氪金強度算是我從小到大玩的游戲中,能排得上第一的了。
對于這種寸卡寸金的游戲,如何在無窮無盡的抽卡活動中,做到理性抽卡,無疑需要嚴謹的數學分析,才能了解大概氪多少金才能滿足自己的預期。本文將對此做出一定的解答。
同時,本文對于網上一直所傳的氪不改命,玄不救非之說,也將進行一定的抨擊。
假設陳述
- 原神抽獎卡池,在非保底的情況下,抽到五星的概率為基礎概率,即0.6%
符號說明
符號含義X XX表示在平均概率下進行
獨立重復試驗中第一次
抽到五星的次數的隨機變量P ( s u c c e s s ) P(success)P(success)表示抽到五星的平均概率P ( b o t t o m ) P(bottom)P(bottom)表示保底情況出現的概率P ( b a s e ) P(base)P(base)表示抽到五星的基礎概率
已知:0.6%n nn表示保底在第幾次未抽中時出現
已知:90P ( s u c c e s s ∥ b o t t o m ) P(success|bottom)P(success∥bottom)表示在保底情況下抽中五星的概率
已知:1P ( s u c c e s s ∥ b o t t o m  ̄ ) P(success|overline{bottom})P(success∥bottom)表示在非保底情況下抽中五星的概率
已知:P ( b a s e ) P(base)P(base)
目標變量
P ( s u c c e s s ) P(success)P(success)
求解方法
- 法一:
運用全概率公式,寫出方程組,直接進行求解。
{ P ( b o t t o m ) P ( s u c c e s s ∥ b o t t o m ) + P ( b o t t o m  ̄ ) P ( s u c c e s s ∥ b o t t o m  ̄ ) = P ( s u c c e s s ) P ( s u c c e s s ) ( 1 ? P ( b a s e ) ) n ? 1 = P ( b o t t o m ) left{P(bottom)P(success∥bottom)+P(bottomˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ)P(success∥bottomˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ)=P(success)P(success)(1?P(base))n?1=P(bottom)P(bottom)P(success‖bottom)+P(bottomˉ)P(success‖bottomˉ)=P(success)P(success)(1?P(base))n?1=P(bottom)ight.{P(bottom)P(success∥bottom)+P(bottom)P(success∥bottom)=P(success)P(success)(1?P(base))n?1=P(bottom)
代入,得:
{ P ( b o t t o m ) + 0.006 ( 1 ? P ( b o t t o m ) ) = P ( s u c c e s s ) P ( s u c c e s s ) ( 1 ? 0.006 ) 89 = P ( b o t t o m ) left{P(bottom)+0.006(1?P(bottom))=P(success)P(success)(1?0.006)89=P(bottom)P(bottom)+0.006(1?P(bottom))=P(success)P(success)(1?0.006)89=P(bottom)ight.{P(bottom)+0.006(1?P(bottom))=P(success)P(success)(1?0.006)89=P(bottom)?
求解,得:
P ( s u c c e s s ) = 0.01435 ± 0.000005 P(success)=0.01435pm0.000005P(success)=0.01435±0.000005 - 法二:
通過間接求解,在平均概率下進行獨立重復試驗中第一次抽到五星的次數的期望,進行求解。
E [ X ] = ∑ i = 1 n ? 1 i ? P ( b a s e ) ( 1 ? P ( b a s e ) ) i ? 1 + n ? ( 1 ? ∑ i = 1 n ? 1 P ( b a s e ) ( 1 ? P ( b a s e ) ) i ? 1 ) = ∑ i = 1 89 i ? 0.006 ( 1 ? 0.006 ) 89 + 90 ? ( 1 ? ∑ i = 1 89 0.006 ( 1 ? 0.006 ) 89 ) ≈ 69.6998 E[X]=sum_{i=1}^{n-1}i*P(base)(1-P(base))^{i-1}+n*(1-sum_{i=1}^{n-1}P(base)(1-P(base))^{i-1}) quad =sum_{i=1}^{89}i*0.006(1-0.006)^{89}+90*(1-sum_{i=1}^{89}0.006(1-0.006)^{89}) quad approx69.6998E[X]=∑i=1n?1?i?P(base)(1?P(base))i?1+n?(1?∑i=1n?1?P(base)(1?P(base))i?1)=∑i=189?i?0.006(1?0.006)89+90?(1?∑i=189?0.006(1?0.006)89)≈69.6998
P ( s u c c e s s ) = 1 E [ X ] P(success)=frac{1}{E[X]}P(success)=E[X]1?(這個等式,概率論那本書上好像沒有,不過我自己私下里證明過了,感興趣的同學可以自行證明)
那么,可以得到與法一相同的結果,證明了結果的正確性。
結論
可以看到的是我們得出的平均概率1.435%是略小于官方給出的平均概率1.6%的。
很顯然,這說明,即使在未保底的情況下,我們抽中五星的概率可能并非是基礎概率0.6%。
結合這幾天,我看的PDD抽獎的視頻,我發現確實在一些之前很非的情況下,后面抽到五星的頻率顯著變高。
當然,我并不清楚原神抽獎內部究竟是怎樣的機制,不過或許可以借助這一點,再結合一些大佬的分析,在五十抽向后的概率或許確實有一定的提升。所以大家注意好這點,抽雙黃吧!
當然,這也僅僅是概率的提高,可能樣本量少一點的話,在實際抽獎中,根本感覺不到那種概率的提升。所以,也僅供大家參考。同時,大家也要考慮一下自己的經濟水平究竟如何,有多大經濟水平,有多大期望。
這里我用python做了一個小實驗,用直方圖展示10000個玩家,在我上述假設的那種情況下抽獎2000次,抽到五星的次數,并與無保底的轉換平均概率(0.01435)進行了比較。
# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport randomimport numpy as npfrom pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei']random.seed(0)data1=[]data2=[]n=10000epoches=2000prob=0.006prob_trans=0.01435for i in range(n): curcnt=0 counter=0 for epoch in range(epoches): rand=random.random() counter+=1 if rand從左圖中,大家可以估計一下,自己抽多少次,能拿到多少五星。
同時,通過上圖的對比,可以看出,在原神抽獎的機制下,并不會出現,特別非酋,或者特別歐皇的情況。最非酋和最歐皇的,也就是一倍之差。所以,大家也不要相信網上那些一個十抽多少黃的視頻了,肯定是P的。
即使出了雙黃的兄弟,之前也是大概率流下過非酋的眼淚。
所以,這個游戲,沒有絕對的非酋,也沒有絕對的歐皇,合理估計自己能拿到的五星,不要有非分之想,方為正途!
小編是一名python開發工程師,這里有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,并在后臺私信小編:“01”即可領取
總結
以上是生活随笔為你收集整理的python抽奖概率设计_通过python分析原神,结果出现了“这种情况”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各种 MacBook 和 5K iMac
- 下一篇: array python 交集_pyth