一、问题描述
我们打游戏赢一局的话获胜的概率就会增加,输一局获胜的概率就会减少,但是如果游戏次数足够多的的时候,一局游戏的输赢对于游戏获胜的概率的影响微乎甚微,那么我们假设有没有一种可能,那就是说是否存在一个或多个数字,它们的出现对于游戏获胜的概率能够影响非常大,也就是这个数字的出现能够使游戏获胜的概率实现跳跃性的变化。
二、问题分析
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值足够大的时候,我们的机器已经带不动了。
四、结果分析
根据上述值我们可以知道,当游戏次数足够少的时候,也就是刚开始接触游戏的时候,这个时候游戏次数的输赢次数对于最终结果影响是非常大的,也可以说这个时候的次数能够对最终结果产生跳跃性的变化。但是当游戏次数足够多的时候,这个时候游戏输赢的次数对于最终获胜的结果影响是越来越小,所以我们要想提高游戏获胜的概率,我们就应该少输并且要适当控制游戏的次数。