所以我让A和B玩一个游戏,游戏开始于A扔硬币。 如果显示正面,则A获胜,游戏结束。 否则,B掷出,如果B领先,则B获胜,比赛结束。 基本上,游戏将一直持续到谁的硬币先显示出领先者为止。

理论上,A获胜的概率为2/3,而B获胜的概率为1/3。 这里引用

我正在尝试在Python中运行4000模拟来对此进行模拟。 但是,对于A,对于B,我并没有真正接近2/3。 下面是我的代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33import random

Atoss = 0

Btoss = 0

Awins = []

Bwins = []

for i in range(4001):

head = False

while (not head):

A = random.randint(0, 2) # random 0 and 1

Atoss += 1

if A == 1:

head = True

else:

B = random.randint(0, 2) # random 0 and 1

Btoss += 1

if B == 1:

head = True

totalToss = Atoss + Btoss

Awin = Atoss / totalToss

Awins.append(Awin)

Bwin = Btoss / totalToss

Bwins.append(Bwin)

probA = sum(Awins) / len(Awins)

probB = sum(Bwins) / len(Bwins)

print("Probability A:", probA)

print("Probability B:", probB)

我在某个地方搞砸了吗?

编辑:

@bart cubrich回答,将randint(0, 2)更改为randint(0, 1)可解决此问题。

您的Awin / Bwin / Awins / Bwins计算看起来并不像如何定义游戏的胜利。

是的,我认为进行抛掷/总抛掷是不正确的,但是我无法弄清楚如何像在纸上一样对它进行"编码"

主要错误是此代码是一个错字,所以也许值得一票,但它是一个很酷的问题,通常我喜欢您的解决方案。 另外,您提前意识到了这可能是一个错误。 绝对不需要跟踪投掷的次数,但是有趣的是要查看循环需要多少投掷。

您遇到的一个问题是random.randomint应该是

1

2A = random.randint(0, 1) # random 0 and 1

B = random.randint(0, 1) # random 0 and 1

您的版本产生零,一和二。因为您实际上是在滚动一个3面骰子,且边数= [0,1,2],而只有" 1"获胜,这完全弄乱了获得正面的机会。尝试以下方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34import random

random.seed(123)

Atoss = 0

Btoss = 0

Awins = 0

Bwins = 0

for i in range(4000):

head = False

while (not head):

A = random.randint(0, 1) # random 0 and 1

if A == 1:

Awins+=1

head = True

else:

B = random.randint(0, 1) # random 0 and 1

if B == 1:

Bwins+=1

head = True

probA = Awins / (Awins+Bwins)

probB = Bwins / (Awins+Bwins)

print("Probability A:", probA)

print("Probability B:", probB)

Out:

'Probability A: 0.6653336665833541'

'Probability B: 0.3346663334166458'

我得到的概率是?A:66%B:33%。

注意,在来自random.py的文档中

random.randint(a,b)

-返回一个随机整数N,使a <= N <= b。

这与numpy.random.randomint所提供的不同

-一个随机整数N,使得a <= N

文档在这里

非常感谢您的反馈,答案以及对我的评价:)关于我写randint(0,2),这实际上是故意的,因为我认为randint(a, b)的工作方式是它将为您提供范围为到b - 1,所以我将2放在这里。显然我错了。但是还是非常感谢您!

是的,请记住在调试时使用简单的步骤。我尝试使用不同的规则来运行您的游戏。我跑了一个例子,如果A不甩头B就赢了。那应该有50/50的几率,但没有,这就是当我看到random.randint(0,2)的问题。另外,使用新的库和方法时,请务必阅读文档。另外,当您将range(4001)设置为range(4000)时,请确保了解range的工作原理。我喜欢像anaconda / spyder一样使用和IDE,因此我可以轻松查看变量内部。令人困惑的是,numpys random.randomint()的工作原理与您一样。

您的Awin和Bwin计算表明,如果A在第5次掷骰中获胜,则由于A掷3次,B掷2次,所以A获胜3/5,B获2/5。这不是胜利应该发挥作用的方式。

另外,您需要random.randrange,而不是random.randint,并且将Atoss和Btoss初始化放置在循环之前而不是循环内部,这意味着它们不会在新的迭代中重置。 (不过,在正确的实现中,抛计数是不必要的。)

是的,我确实觉得获得获胜的可能性非常容易,但我无法将头围住,并且进行#次抛掷/总抛掷似乎不正确。您能在这里给我一些指导吗?

python模拟抛硬币_关于概率:模拟2个人抛硬币直到获得第一个头像Python相关推荐

  1. 蒙特卡洛模拟预测股票_使用蒙特卡洛模拟来预测极端天气事件

    蒙特卡洛模拟预测股票 In a previous article, I outlined the limitations of conventional time series models such ...

  2. python pca主成分_超越“经典” PCA:功能主成分分析(FPCA)应用于使用Python的时间序列...

    python pca主成分 FPCA is traditionally implemented with R but the "FDASRSF" package from J. D ...

  3. 为什么python不需要编译_为什么我用Go写机器学习部署平台,而偏偏不用Python?...

    [新智元导读]虽然在机器学习中,Python已经无孔不入.但Python并不是全能之神手中的魔杖可以为所欲为.很多情况下其实用Python的效果并不如其他语言,比如Go更好,甚至可能更糟.本文介绍了为 ...

  4. python vba excel课程_【Python3+VBA】在Excel中生成小姐姐|python3教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 本文转载至知乎ID:Charles(白露未晞)知乎个人专栏 下载W3Cschool手机App,0基础随时随 ...

  5. 40天python新手入门教程_自律改变自我!努力40天轻松从入门到精通Python

    我是完全自学的,看完这条回答你就不用花钱学了.一千多的课程也就是基础课,并不会给你有多深入.如果要是学基础的话,看看下面的学习线路图以及相关的学习方法足够了.贴一个我之前自学的路径图和方法. 小白学P ...

  6. python画爱心原理_七夕倒计时,程序员式优雅表白,教你用python代码画爱心

    还能用python代码画爱心?还有这种操作?这是什么原理? 不相信python代码可以画爱心?先来一张效果图来看看效果吧! 用python代码画爱心的思路是怎样的? 1.怎么画心形曲线 2.怎么填满心 ...

  7. 用python编写掷100次硬币_认识概率,用python模拟掷硬币

    在这个世上除了我们知道的100度时水会烧开,扔块石头最终总会落到地面这些必然的事件外.其实大多数时间我们都会面临随机事件,像最常见的掷硬币时正反面总是随机出现,女孩子总有遇到渣男的概率,创业成功率等等 ...

  8. python网球比赛模拟主持稿_主持人大赛模拟主持稿

    主持人大赛模拟主持稿 篇一: 尊敬的评委在座的同学们,大家晚上好(鞠躬) 非常荣幸能站在这里,我是来自 ********* ,向大家问 好(鞠躬) 第二环节模拟主持我抽到的是体育类, 所以我将以 20 ...

  9. python模拟购物车流程_用函数模拟简单的购物车(Python)

    """ 购物车功能: a.引导用户输入金额 b.给用户展示所有的商品 c.引导用户输入需要进行的操作[添加 删除 结算购物车 退出] d.引导用户选择商品 e.引导用户输 ...

最新文章

  1. 科技部5个6G重点项目
  2. 如何为同一字体添加多个字体文件?
  3. 火狐浏览器修改userAgent
  4. 卧槽!阿里云推出“网盘”,百度网盘迎来劲敌...
  5. Mahout实战---运行第一个推荐引擎
  6. 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等
  7. thinkphp-where-数组条件-普通查询
  8. php实现ftp上传,PHP_PHP实现ftp上传文件示例,FTP上传是PHP实现的一个常见且 - phpStudy...
  9. REGEXP使用经验
  10. PHP统计订单表,订单售后表金额
  11. 在ubuntu 64位的机器上执行arm-linux-gcc提示 no such file or directory
  12. 基于51单片机和 ADC0808 ADC0809的自动数字电压表proteus仿真程序设计
  13. 安卓开发日记1——虫虫新闻
  14. edge浏览器主页被360篡改如何修改?
  15. 联想电脑G40无法使用 非要睡眠后才能启用wifi
  16. 分享 60 个相见恨晚的神器工具
  17. Web3.0峰会上IPFS最新消息利好不断
  18. ## YARN运行资源配置
  19. 失去jQuery Bloat ­ —使用NodeList.js进行DOM操作
  20. 天梯赛L1级别80道题解

热门文章

  1. 做会计记账和做java哪个累_累成狗的十大专业排名,会计竟然不是第一!你的专业排第几?...
  2. I2S/PCM接口及音频codec
  3. qrcode生成二维码并本地下载
  4. CSS字体属性之字体系列、字体大小、字体粗细、字体样式以及字体的符合属性(基础详解)
  5. cmd的发送 mmc_【翻译】如何使用MMC/SD卡
  6. 【集合论】关系性质 ( 对称性 | 对称性示例 | 对称性相关定理 | 反对称性 | 反对称性示例 | 反对称性定理 )
  7. 城市公交系统车站客流量预测的研究现状
  8. 关于开发中小学生学习数学的软件用户调研
  9. 品达物流TMS项目_第1章 项目概述和环境搭建
  10. imemode属性,关系textbox的取值