使用python模拟骰子,并对骰子进行有限次数投掷
首先,使用python编写一个类似骰子的类,将其作为投掷的骰子。创建一个python文件,对文件引入random模块中randint类,random.randint(a,b),用于生成一个指定范围(a,b)内的整数。创建一个名为Die的类,初始化确定骰子的六个面。在其中创建一个函数“roll"用于返回一个骰子点数。from random import randintclass Die:"""表示一
·
首先,使用python编写一个类似骰子的类,将其作为投掷的骰子。
创建一个python文件,对文件引入random模块中randint类,random.randint(a,b),用于生成一个指定范围(a,b)内的整数。
创建一个名为Die的类,初始化确定骰子的六个面。在其中创建一个函数“roll"用于返回一个骰子点数。
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)
完成骰子的创建之后,我们再创建一个python文件,对创建的骰子进行投掷并将得到的数据绘制成表。
引入plotly.graph_objs绘图库中Bar和Layout类;再引入plotly中的offline,用于生成图表;最后将之前创建的模拟骰子的类引入。
die=Die()用于运行模拟骰子的类,之后创建一个空列表将骰子每次投掷得出的数据储存在列表中,利用下方代码(分析结果)处,对汇总致空列表的数据进行整理,分别对骰子投出每个点数的数量整理,储存在空列表frequencies中。
对最终得到的数据进行可视化。
最终创建图表。
from plotly.graph_objs import Bar,Layout
from plotly import offline
from 模拟骰子 import Die
#创建一个D6
die = Die()
#掷几次骰子并将结果储存在一个列表中
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
#分析结果
frequencies = []
for value in range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
#对结果进行可视化
x_values = list(range(1,die.num_sides+1))
data = [Bar(x=x_values,y=frequencies)]
x_axis_config = {'title':'结果'}
y_axis_config = {'title':'结果的频率'}
my_layout = Layout(title='掷一个D6 1000次的结果',
xaxis=x_axis_config,yaxis=y_axis_config)
offline.plot({'data':data,'layout':my_layout},filename='d6.html')
该程序每次运行都将骰子投掷1000次汇总成表,每次运行所生成的图表也各不相同。
运行结果:
更多推荐
已为社区贡献1条内容
所有评论(0)