python模拟抛硬币_关于概率:模拟2个人抛硬币直到获得第一个头像Python
所以我让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相关推荐
- 蒙特卡洛模拟预测股票_使用蒙特卡洛模拟来预测极端天气事件
蒙特卡洛模拟预测股票 In a previous article, I outlined the limitations of conventional time series models such ...
- python pca主成分_超越“经典” PCA:功能主成分分析(FPCA)应用于使用Python的时间序列...
python pca主成分 FPCA is traditionally implemented with R but the "FDASRSF" package from J. D ...
- 为什么python不需要编译_为什么我用Go写机器学习部署平台,而偏偏不用Python?...
[新智元导读]虽然在机器学习中,Python已经无孔不入.但Python并不是全能之神手中的魔杖可以为所欲为.很多情况下其实用Python的效果并不如其他语言,比如Go更好,甚至可能更糟.本文介绍了为 ...
- python vba excel课程_【Python3+VBA】在Excel中生成小姐姐|python3教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ 本文转载至知乎ID:Charles(白露未晞)知乎个人专栏 下载W3Cschool手机App,0基础随时随 ...
- 40天python新手入门教程_自律改变自我!努力40天轻松从入门到精通Python
我是完全自学的,看完这条回答你就不用花钱学了.一千多的课程也就是基础课,并不会给你有多深入.如果要是学基础的话,看看下面的学习线路图以及相关的学习方法足够了.贴一个我之前自学的路径图和方法. 小白学P ...
- python画爱心原理_七夕倒计时,程序员式优雅表白,教你用python代码画爱心
还能用python代码画爱心?还有这种操作?这是什么原理? 不相信python代码可以画爱心?先来一张效果图来看看效果吧! 用python代码画爱心的思路是怎样的? 1.怎么画心形曲线 2.怎么填满心 ...
- 用python编写掷100次硬币_认识概率,用python模拟掷硬币
在这个世上除了我们知道的100度时水会烧开,扔块石头最终总会落到地面这些必然的事件外.其实大多数时间我们都会面临随机事件,像最常见的掷硬币时正反面总是随机出现,女孩子总有遇到渣男的概率,创业成功率等等 ...
- python网球比赛模拟主持稿_主持人大赛模拟主持稿
主持人大赛模拟主持稿 篇一: 尊敬的评委在座的同学们,大家晚上好(鞠躬) 非常荣幸能站在这里,我是来自 ********* ,向大家问 好(鞠躬) 第二环节模拟主持我抽到的是体育类, 所以我将以 20 ...
- python模拟购物车流程_用函数模拟简单的购物车(Python)
""" 购物车功能: a.引导用户输入金额 b.给用户展示所有的商品 c.引导用户输入需要进行的操作[添加 删除 结算购物车 退出] d.引导用户选择商品 e.引导用户输 ...
最新文章
- 科技部5个6G重点项目
- 如何为同一字体添加多个字体文件?
- 火狐浏览器修改userAgent
- 卧槽!阿里云推出“网盘”,百度网盘迎来劲敌...
- Mahout实战---运行第一个推荐引擎
- 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等
- thinkphp-where-数组条件-普通查询
- php实现ftp上传,PHP_PHP实现ftp上传文件示例,FTP上传是PHP实现的一个常见且 - phpStudy...
- REGEXP使用经验
- PHP统计订单表,订单售后表金额
- 在ubuntu 64位的机器上执行arm-linux-gcc提示 no such file or directory
- 基于51单片机和 ADC0808 ADC0809的自动数字电压表proteus仿真程序设计
- 安卓开发日记1——虫虫新闻
- edge浏览器主页被360篡改如何修改?
- 联想电脑G40无法使用 非要睡眠后才能启用wifi
- 分享 60 个相见恨晚的神器工具
- Web3.0峰会上IPFS最新消息利好不断
- ## YARN运行资源配置
- 失去jQuery Bloat —使用NodeList.js进行DOM操作
- 天梯赛L1级别80道题解
热门文章
- 做会计记账和做java哪个累_累成狗的十大专业排名,会计竟然不是第一!你的专业排第几?...
- I2S/PCM接口及音频codec
- qrcode生成二维码并本地下载
- CSS字体属性之字体系列、字体大小、字体粗细、字体样式以及字体的符合属性(基础详解)
- cmd的发送 mmc_【翻译】如何使用MMC/SD卡
- 【集合论】关系性质 ( 对称性 | 对称性示例 | 对称性相关定理 | 反对称性 | 反对称性示例 | 反对称性定理 )
- 城市公交系统车站客流量预测的研究现状
- 关于开发中小学生学习数学的软件用户调研
- 品达物流TMS项目_第1章 项目概述和环境搭建
- imemode属性,关系textbox的取值