python可视化窗口制作一个摇骰子游戏_python模拟投骰子并可视化

这篇博客通过Python的pygal库展示了如何创建一个骰子类,并进行10000次和1000000次的投掷模拟。首先,作者创建了一个6面骰子,记录了投掷10000次后的频数结果并进行了可视化。接着,增加了第二个骰子,再次进行10000次投掷,结果显示为接近正态分布的频数统计。通过这些实验,博客探讨了骰子投掷的统计规律。
摘要由CSDN通过智能技术生成

安装pygal库

首先创建一个骰子的类:

from random import randint

class Die():

"""表示一个骰子的类"""

def __init__(self, num_sides = 6):

"""色子默认6面"""

self.num_sides = num_sides

def roll(self):

"""方法roll返回一个位于1和骰子面数之间的随机值"""

return randint(1, self.num_sides)

来一个简单的6面骰子,投掷10000次并将频数结果可视化

from die import Die

import pygal

# 创建一个6面骰子的实例

die_6 = Die()

num_throw = 10000

results = [die_6.roll() for i in range(num_throw)]

frequencies = [results.count(value) for value in range(1,die_6.num_sides+1)]

hist = pygal.Bar()

hist.title = "Frequencies of 6-sides throw %d times" % num_throw

hist.x_lables = list(range(1,die_6.num_sides+1))

hist.x_title = "Result"

hist.y_title = "Frequencies of each value"

hist.add("D6",frequencies)

hist.render_to_file("D6_%d.svg" % num_throw)

hist.render_to_png("D6_%d.png" % num_throw)

25f6309470d4?from=groupmessage&isappinstalled=0

1个6面骰子10000次投掷

这便是一个6面骰子10000次投掷后的频数统计。

再来看下2个6面的骰子点数统计会是如何的呢?

import pygal

from die import Die

die1 = Die()

die2 = Die()

num_throw = 10000

results = [die1.roll() + die2.roll()

for num in range(num_throw)]

frequencies = [results.count(value)

for value in range

(2, die1.num_sides+die2.num_sides+1)]

hist = pygal.Bar()

hist.title = 'Results of two D6 throw %d times' % num_throw

hist.x_labels = list(range(2, die1.num_sides+die2.num_sides+1))

hist.x_title = "Results"

hist.y_title = "Frequency of value"

hist.add('D6+D6', frequencies)

hist.render_to_file('D6_D6.svg')

hist.render_to_png('D6-D6_%d.png' % num_throw)

我们来看下结果:

25f6309470d4?from=groupmessage&isappinstalled=0

2个6面骰子10000次投掷

是不是标准的正态分布。

再来看下2个骰子投1000000次呢?我们只需要见num_throw = 1000000再运行程序就行了。看下结果:

25f6309470d4?from=groupmessage&isappinstalled=0

2个6面骰子1000000次投掷

是不是跟接近正态分布?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值