python按键事件(python监听事件)
模拟效果:
实验模拟效果
频率的定义
fn(a )=nA/n(n ) n称为随机实验的总次数,nA称为事件a在n次随机实验中发生的次数(度数) ),fn ) a称为在这n次实验中a发生的频率。频率是0到1之间的实数。 需要在大量重复实验的基础上,只展示随机事件发生的可能性。 观察
利用python模拟抛硬币和掷骰子实验
硬币在不同实验次数出现正面的概率,观察筛子在不同实验次数出现1、2点的概率。 各实验分为8组进行,分别统计5次实验、50次实验、500次实验的概率值制作1~2000次2种实验的散点图模拟的思想
, 利用python随机库(random )构建Chooon随机生成器,生成实验概率构造一个随机实验函数
defsy (空间、组、A_list、 n )进行分组,主要从样本空间列表space中随机获取一个样本点,判断是否在用if else统计的事件A_list列表中,最后根据事件a在n次实验中出现的次数得出概率。 组是组数。深度(空格,组,a _列表,n ) :
''''
这是一个随机的实验函数。
space是随机事件的样本空间,包括所有样本点
组是需要分组的次数
A_list是发生了a事件的采样点的列表
n是这次实验的重复次数
''''
result_now=[] #保存本次的实验结果
财富(组) :
“”进行分组实验“”
SA=0 #最初的a事件的发生次数
财富:
“”每组进行n次实验“”
sa=1ifRandom.choice(space ) in A_list else 0 # A事件的发生频率增加1
result_now.append(round(sa/n,4 ) )在当前团队完成实验后,将频率统计存储到变量中
return result _ now
构造一个重复实验函数
进行基于def re _ sy (r_n,空格,组,A_list )函数控制的不同重复输出的实验r _ n是进行重复实验的次数的列表在本论文中,r _ n=[ 5,50,500 ]defre_sy(r_n、空间、组、A_list ) :
重复“”随机实验“”
结果=]
n :之内
result.append (sy (空间,组,A_list,n ) )
return result
构造一个结果输出函数
都是简单的字符串打印输出,没什么好说的。 只说明result反复进行实验的结果,收纳了2维列表。def打印_ sy (a _列表,r_n,组,结果) :
“”将实验结果打印到控制台“”
“控制台输出打印”
title='这是观察' {} '的出现频率的随机实验'.format ','.join(a_list ) '
打印(标题中心(50,' * ' )
打印('组\t\t ',结束=' ' )
n :之内
打印(重复(次(t ) .格式) n ),结束=) )
print () )
财富(组) :
打印(组(t ) .格式) j1 ),结束=' )
财富(len ) ) :
打印({ :4 f } (t ) .格式)结果[ I ] [ j ],结束=' )
设定print(
构造硬币实验函数
参数,开始实验def coin_main () :
r_n=[5、50、500]#设定不同的实验次数
组
= 8 # 设置分组参数 coin = ["正面", "反面"] # 用列表模拟一颗硬币 A_list = ["正面"] # 设置要观测的样本点 coin_sy = re_sy(r_n, coin, group, A_list)# 进行实验 print_sy(A_list, r_n, group, coin_sy)# 输出结果开始硬币实验
random.seed(5)#设置随机数种子,方便以后重复实验过程,若不设置每次实验结果不相同 coin_main()构造掷骰子实验函数
直接修改参数,就可以得到掷骰子实验的代码,非常简单
def dice_main(): r_n = [5, 50, 500] # 设置不同的实验次数 group = 8 # 设置分组参数 dice = ["1", "2", "3", "4", "5", "6"] # 用列表模拟一颗硬币 A_list = ["1", "2"] # 设置要观测的样本点 dice_sy = re_sy(r_n, dice, group, A_list) print_sy(A_list, r_n, group, dice_sy)开始掷骰子实验
random.seed(5) # 设置随机数种子,方便以后重复实验过程,若不设置每次实验结果不相同 dice_main()绘制1~2000次实验的散点图
可以利用matplotlib库绘制,代码比较简单,都备注相应的注释。
import matplotlib.pyplot as plt import numpy as np '''绘制随机实验n与p(A)的散点图''' max_n = 2000 # 设置最大实验次数 n = [] PA_coin = [] PA_dice = [] for i in range(max_n): n.append(i + 1) PA_coin.append(sy(["正面", "反面"], 1, ["正面"], i + 1)[0]) # 进行实验 PA_dice.append(sy(["1", "2", "3", "4", "5", "6"], 1, ["1", "2"], i + 1)[0]) # 进行实验 n = np.array(n) PA_coin = np.array(PA_coin) PA_dice = np.array(PA_dice) '''绘图开始''' fig = plt.figure() # 创建画图窗口 ax1 = fig.add_subplot(2, 1, 1) # 将窗口划分为2行一列,选择第一块区域画图 ax1.set_title("coin") # 设置图标的标题 ax1.set_xlabel('n') # 设置x轴标签 ax1.set_ylabel('P(A)') # 设置y轴标签 ax1.scatter(n, PA_coin) # 绘制散点图 ax1.plot(n, np.array([0.5] * 2000), c='b', ls='--') # 绘制理论概率线 ax2 = fig.add_subplot(2, 1, 2) # 将窗口划分为2行一列,选择第二块区域画图 ax2.set_title("dice") ax2.set_xlabel('n') ax2.set_ylabel('P(A)') ax2.scatter(n, PA_dice) ax2.plot(n, np.array([0.33] * 2000), c='b', ls='--') # 绘制理论概率线 plt.show()结论
通过实验可以看到当实验次数少的时候,随机事件发生的概率规律变化波动大而随着实验次数增加实际观察概率逐渐向理论概率收敛。