1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python模拟抛硬币_python模拟抛硬币

python模拟抛硬币_python模拟抛硬币

时间:2019-03-03 01:13:05

相关推荐

python模拟抛硬币_python模拟抛硬币

python实现:链接如下:个人觉得抛硬币并不是真正的随机事件,和抛硬币时候的各种状态参量有关系,那么到底什么是真正的随机?​

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

# 抛硬币次数

n_flip = 100

# 硬币弹跳次数

n_jump = 4

# 是否均匀初值

is_uniform = True

# 模拟硬币弹跳

def sim_coin_jump(x):

if is_uniform:

# 均匀初值使用sin(1000x+1)

return np.sin(1000 * x + 1)

else:

# 非均匀初值使用sin(1000πx+1)

return np.sin(1000 * np.pi * x + 1)

# 模拟抛硬币

def sim_flip_coin(x, n):

for i in range(n):

x = sim_coin_jump(x)

return x

# 初值均匀的随机过程:使用等差序列模拟

def uniform(f):

# 均匀间隔

iterable = (1 + (10 ** -10) * n for n in range(f))

return np.fromiter(iterable, float)

# 生成非均匀间隔序列

def uneven(f):

# 非均匀间隔: 随着n变化间隔会变小

iterable = (1 + (10 ** -10) * np.log(n + 1) for n in range(f))

return np.fromiter(iterable, float)

# 统计并画图

def stat_and_draw(R):

# 统计正负数个数

pos = np.where(R > 0)

npos = len(R[pos])

neg = np.where(R < 0)

nneg = len(R[neg])

# 计算相邻数的乘积期望

R1 = R[:-1]

R2 = R[1:]

mean = np.mean(np.multiply(R1, R2))

stat = "Statistics: pos[%d] neg[%d] mean[%s]" % (npos, nneg, mean)

plt.xlabel(stat)

# 标题

title = "Flip coin"

para = "(%s and coin_dump[%d])" % ('uniform' if is_uniform else 'uneven', n_jump)

title += para

plt.title(title)

print(title)

print(stat)

# X轴是抛硬币次数编号

X = np.arange(n_flip)

# plt.plot(X, R)

# 红圆圈标记点

plt.plot(X, R, marker='.', markeredgecolor='red', markerfacecolor='red')

plt.show()

def flap_coin():

# 生成初值序列

S = uniform(n_flip) if is_uniform else uneven(n_flip)

# 开始模拟抛硬币

R = sim_flip_coin(S, n_jump)

# 统计并画图

stat_and_draw(R)

if __name__ == '__main__':

flap_coin()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。