失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 掷骰子python代码_python模拟掷骰子

掷骰子python代码_python模拟掷骰子

时间:2020-05-30 15:40:06

相关推荐

掷骰子python代码_python模拟掷骰子

1、使用Pygal模拟掷骰子

1.1 安装Pygal

python -m pip install --user pygal

1.2 创建Die类

from random import randint

class Die():

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

def __init__(self,num_sides=6):

'''骰子默认为6面'''

self.num_sides=num_sides

def roll(self):

'''返回一个位于1和骰子面数之间的随机值'''

return randint(1,self.num_sides)

1.3 掷骰子

from die import Die

#创建一个D6

die=Die()

#掷几次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(10):

result=die.roll()

results.append(result)

print(results)

输出:

[5, 4, 1, 6, 4, 6, 3, 5, 3, 5]

1.4 分析结果

from die import Die

#创建一个D6

die=Die()

#掷几次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(20):

result=die.roll()

results.append(result)

print(results)

#分析结果

frequencies=[]

for value in range(1,die.num_sides+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

输出:

[1, 2, 4, 2, 1, 1, 6, 2, 3, 3, 3, 4, 3, 5, 1, 3, 6, 2, 2, 6]

[4, 5, 5, 2, 1, 3]

1.5 绘制直方图

直方图是一种条形图,指出了各种结果出现的频率。

import pygal

from die import Die

#创建一个D6

die=Die()

#掷几次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(1000):

result=die.roll()

results.append(result)

print(results)

#分析结果

frequencies=[]

for value in range(1,die.num_sides+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

#对结果进行可视化

hist=pygal.Bar() #创建实例

hist.title="Results of rolling one D6 1000 times." #用于标示直方图的字符串

hist.x_lables=['1','2','3','4','5','6'] #将掷骰子的结果用作x轴的标签

hist.x_title="Result" #给x轴添加标题

hist.y_title="Frequency of Result"

hist.add('D6',frequencies) #用add()函数将一系列的值添加到图表中

hist.render_to_file('die_visual.svg') #将图表渲染为一个SVG文件

输出:

image.png

查看生成的直方图,最简单的方式是使用Web浏览器。

pygal让这个图表具有交互性:如果将鼠标指向该图表中的任何条形,将看到与之相关联的数据。

1.6 同时掷两个骰子

import pygal

from die import Die

#创建两个D6骰子

die_1=Die()

die_2=Die()

#掷骰子多次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(1000):

result=die_1.roll()+die_2.roll() #计算总点数

results.append(result)

print(results)

#分析结果

frequencies=[]

max_result=die_1.num_sides+die_2.num_sides #最大可能点数

for value in range(2,max_result+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

#对结果进行可视化

hist=pygal.Bar() #创建实例

hist.title="Results of rolling one D6 1000 times." #用于标示直方图的字符串

hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] #将掷骰子的结果用作x轴的标签

hist.x_title="Result" #给x轴添加标题

hist.y_title="Frequency of Result"

hist.add('D6+D6',frequencies) #用add()函数将一系列的值添加到图表中

hist.render_to_file('dice_visual.svg') #将图表渲染为一个SVG文件

输出:

image.png

图表显示总点数为7的可能性最大,总点数为2或12的可能性最小

1.7 同时掷两个面数不同的骰子

import pygal

from die import Die

#创建一个D6和一个D10的骰子

die_1=Die()

die_2=Die(10) #实参为10,表示有10面

#掷骰子多次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(50000):

result=die_1.roll()+die_2.roll() #计算总点数

results.append(result)

print(results)

#分析结果

frequencies=[]

max_result=die_1.num_sides+die_2.num_sides #最大可能点数

for value in range(2,max_result+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

#对结果进行可视化

hist=pygal.Bar() #创建实例

hist.title="Results of rolling a D6 and a D10 50,000 times." #用于标示直方图的字符串

hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] #将掷骰子的结果用作x轴的标签

hist.x_title="Result" #给x轴添加标题

hist.y_title="Frequency of Result"

hist.add('D6+D10',frequencies) #用add()函数将一系列的值添加到图表中

hist.render_to_file('different_visual.svg') #将图表渲染为一个SVG文件

输出:

image.png

图表显示:可能性最大的点数有5种,即7,8,9,10,11.

总结:使用matplotlib创建简单的图表;使用散点图来探索随机漫步过程;使用Pygal创建直方图;生成数据集及对其进行可视化。

如果觉得《掷骰子python代码_python模拟掷骰子》对你有帮助,请点赞、收藏,并留下你的观点哦!

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