利用Python分析游戏赢的概率

一、问题描述

我们打游戏赢一局的话获胜的概率就会增加,输一局获胜的概率就会减少,但是如果游戏次数足够多的的时候,一局游戏的输赢对于游戏获胜的概率的影响微乎甚微,那么我们假设有没有一种可能,那就是说是否存在一个或多个数字,它们的出现对于游戏获胜的概率能够影响非常大,也就是这个数字的出现能够使游戏获胜的概率实现跳跃性的变化。

二、问题分析

1、我们设置三个变量win、fina、chance分别表示游戏赢的次数,输的次数和赢的概率。
2、赢的概率chance=win/(win+final)。
3、首先我们设定一组数组n用来产生1-1000共1000组数据,接下来开始执行函数语句。

win=n//101+1
final=n%10+1
chance=win/(win+final)

4、为了保证数据的普遍性,我们开始修改n的值,这样的话我们可以随意改变游戏次数。

三、代码展示

# -*- coding: utf-8 -*-
"""
Spyder 编辑器

这是一个临时脚本文件。
"""
encoding='GBK'
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif']=['SimHei']#设置字体
plt.rcParams['axes.unicode_minus']=False
n=np.linspace(1,1000,1000) #设置数组
win=n//101+1 #获胜次数表达式
final=n%10+1 #失败次数表达式
chance=win/(win+final) #获胜的概率
print('win=',win)
print('final=',final)
print('chance=',chance)
fig=plt.figure()
ax3=Axes3D(fig)
ax3.plot_trisurf(win,final,chance)
ax3.set_zlabel('赢的概率', fontdict={'size': 9, 'color': 'red'})
ax3.set_ylabel('输的次数', fontdict={'size': 9, 'color': 'red'})
ax3.set_xlabel('赢的次数', fontdict={'size': 9, 'color': 'red'})
plt.show()

四、数据可视化

1、n值取1000
在这里插入图片描述
在这里插入图片描述
2、n值取10000,同时修改final=n%100+1
在这里插入图片描述
3、n值取100000,同时修改final=n%1000+1
在这里插入图片描述
4、n值取1000000,同时修改final=n%10000+1
在这里插入图片描述
我们就取这么多值,实际上当n=1000000,的时候,我们已经实际上已经产生了1000000000000个值,这个数字已经很具有代表性了,因为不管接下来你n值取多大,图形已经趋于稳定了。并且当n值足够大的时候,我们的机器已经带不动了。

四、结果分析

根据上述值我们可以知道,当游戏次数足够少的时候,也就是刚开始接触游戏的时候,这个时候游戏次数的输赢次数对于最终结果影响是非常大的,也可以说这个时候的次数能够对最终结果产生跳跃性的变化。但是当游戏次数足够多的时候,这个时候游戏输赢的次数对于最终获胜的结果影响是越来越小,所以我们要想提高游戏获胜的概率,我们就应该少输并且要适当控制游戏的次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈喽朝龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值