python实现简单随机模拟——抛呀抛硬币
还是在上次提到的数据之魅那本书,看到模拟这章,有个python模拟脚本,但书上不全,就自己简单写了下。
流程:在不同的平衡参数p(为0.5时为均匀的)下,模拟60次实验,每次投硬币8次,统计正面朝上的次数,并作图。
import random
import matplotlib.pyplot as plt repeats, tosses = 60, 8 # p为平衡参数,tosses为每次重复试验中投掷硬币的次数
# 返回当前平衡参数p的情况下,8次实验中正面的次数
def heads(tosses, p):
h = 0
for x in range(0, tosses):
if random.random() < p:
h += 1
return h x = [] # 存放平衡参数p
y = [] # 存放每个p下,60次重复试验得到的h的值
p = 0 # 初始化p,从0开始 while p < 1.01:
hh = []
for t in range(0, repeats):
h = heads(tosses,p)
# 添加微小抖动值,防止点的重叠
h += (random.random()/4)*random.choice([-1,1])
hh.append(h)
#print(p,'\t',heads(tosses,p))
y.append(hh)
x.append(p)
p += 0.05 # 箭头标注p=0.5,即硬币平衡的点
plt.plot(x,y,'g^')
plt.annotate('balence', xy=(0.5, 5), xytext=(0.15, 8),
arrowprops=dict(facecolor='black', shrink=0.05),
) plt.show() '''
# 一次有意思的尝试...
# 开始没做出理想的图,以为一个x,对应多个y没法画(其实就是忘记点的抖动)...
# 这里循环plot也是可以实现的.
for i in range(60):
q = []
for n in range(len(y)):
yn = y[n][i]
q.append(yn)
plt.plot(x,q,'ro')
'''
输出图形如下:

可以看到,在p=0.5,即硬币均匀的情况下,投掷后,硬币正面出现次数大部分在4的附近。
python实现简单随机模拟——抛呀抛硬币的更多相关文章
- Python开发——排队问题随机模拟分析
案例:主要是基于"蒙特卡罗思想",求解排队等待时间问题 场景:厕所排队问题 1.两场电影结束时间相隔较长,互不影响: 2.每场电影结束之后会有20个人想上厕所: 3.这20个人会在 ...
- python之简单POST模拟登录
宿舍自从换了校园网的认证系统就不再用客户端了,只能在网页登录.每次上网都要打开浏览器的话很不方便,而且我有时在ubuntu控制台上想联网但终端文本浏览器似乎不支持页面跳转,既然如此,何不写个客户端呢? ...
- 利用python实现简单随机验证码
#!/usr/bin/env python # -*- coding:utf-8 -*- import random temp ='' for i in range(6): num = random. ...
- Python 实现的随机森林
随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险. 既可以用来做市场营销模拟的建模,统计客户来源,保留和流失.也可用来预测疾病的风险和病患者的易感性. 随机森林是一个 ...
- 详解用python实现简单的遗传算法
详解用python实现简单的遗传算法 今天整理之前写的代码,发现在做数模期间写的用python实现的遗传算法,感觉还是挺有意思的,就拿出来分享一下. 首先遗传算法是一种优化算法,通过模拟基因的优胜劣汰 ...
- Python实现简单的四则运算
GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...
- 随机模拟(MCMC)
http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ http://blog.csdn.net/lin360580306/article/ ...
- Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...
- Python 利用Python编写简单网络爬虫实例2
利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...
随机推荐
- 琐碎的总结 css jQuery js 等等。。。
jQuery outerWidth(true)支持ie7 不错不错css BFC a {display:inline-block} 有用,block不是很有效果 ...
- hiphop-php 搭建 (CentOS)
前提:只支持64位系统 升级GCC: https://github.com/jackywei/HOW-TO-BUILD-HHVM-WiKi/wiki/Build-&-Install-GCC4. ...
- jQuery 2.0.3 源码分析 Deferrred概念
转载http://www.cnblogs.com/aaronjs/p/3348569.html JavaScript编程几乎总是伴随着异步操作,传统的异步操作会在操作完成之后,使用回调函数传回结果,而 ...
- SqlServer中把结果集放到到临时表的方法
一. SELECT INTO 1. 使用select into会自动生成临时表,不需要事先创建 select * into #temp from sysobjects 01. 把存储过程结 ...
- splunk rest api search
如下: curl -u admin:changeme -k https://localhost:8089/services/search/jobs -d search="search sou ...
- jquery中ajax常用方法
index.html: <h3>$.get(url, [data], [callback], [type])<br/> $.post(url, [data], [callbac ...
- Web API初印象
理解REST,RESTful和Web API 1.REST:Representational State Transfer表征状态转移,是Roy Fielding博士在2000年他的博士论文中提出来的 ...
- PostgreSQL数据库系统优点
PostgreSQL 是世界上可以获得的最先进的开放源码的数据库系统, 它提供了多版本并行控制,支持几乎所有 SQL 构件(包括子查询,事务和用户定 义类型和函数), 并且可以获得非常广阔范围的(开发 ...
- Java 多线程中run() 与 start() 的不同
区别:调用start方法实现多线程,而调用run方法没有实现多线程 Start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码.通过调 ...
- TCP协议基础
IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议.通过使用IP协议,使Internet·成为一个允许连接不同类型 ...