首先,使用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次汇总成表,每次运行所生成的图表也各不相同。

运行结果:

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐