说明:

(1) 使用random中的randint产生指定数量的随机整数(骰子点数)

(2) 通过plotly.graph_objs中的Bar和Layout,plotly中的Offline可视化结果

1 骰子类代码

实列化骰子,定义骰子的行为(方法)。

from random import randintclass Die:'''建立一个骰子的类'''def __init__(self,num_sides=6):'''默认骰子为6面'''self.num_sides=num_sidesdef roll(self):'''返回一个位于1和骰子面之间的随机整数'''return randint(1,self.num_sides)

2 投掷一次骰子并可视化

代码:

print("骰子投出的情况:")
#创建骰子对象
die=Die()
results=[]
for roll_num in range(1000):result=die.roll()results.append(result)
print(results)print("每一面出现的频率:")
'''计算每一面出现的频率'''
frequencies=[]
for value in range(1,die.num_sides+1):#计算value在结果中的频率frequency=results.count(value)frequencies.append(frequency)
print(frequencies)'''可视化输出,柱状图显示出现的频率'''
from plotly.graph_objs import Bar,Layout
from plotly import offline
# 对结果进行可视化。
x_values = list(range(1, die.num_sides + 1))
data = [Bar(x=x_values, y=frequencies)]
x_axis_config = {'title': '结果'}#x坐标label
y_axis_config = {'title': '结果的频率'}#y坐标label
#设置图标的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')

输出结果

骰子投出的情况:
[2, 5, 1, 5, 6, 5, 6, 5, 6, 3, 5, 2, 6, 6, 3, 1, 4, 6, 3, 2, 5, 6, 3, 2, 6, 3, 5, 4, 3, 3, 6, 6, 2, 1, 1, 6, 1, 2, 3, 4, 2, 1, 2, 5, 4, 4, 1, 6, 1, 2, 2, 1, 3, 3, 6, 3, 6, 4, 5, 5, 6, 6, 2, 1, 5, 4, 2, 4, 6, 1, 6, 6, 3, 5, 1, 1, 2, 4, 5, 4, 1, 2, 4, 4, 2, 4, 4, 4, 4, 1, 2, 1, 5, 5, 1, 6, 6, 4, 2, 2, 2, 2, 5, 3, 1, 6, 3, 5, 6, 5, 1, 1, 5, 3, 3, 6, 4, 1, 6, 3, 1, 6, 1, 1, 6, 6, 5, 3, 5, 4, 6, 5, 4, 5, 1, 1, 4, 4, 4, 3, 1, 5, 3, 6, 6, 2, 4, 5, 6, 6, 4, 5, 5, 1, 4, 2, 5, 1, 3, 5, 6, 2, 5, 5, 5, 2, 5, 5, 2, 6, 1, 5, 6, 2, 6, 4, 4, 5, 5, 2, 3, 5, 2, 4, 4, 4, 5, 2, 6, 4, 4, 4, 3, 2, 4, 1, 6, 1, 6, 6, 4, 4, 5, 2, 2, 5, 1, 4, 5, 1, 4, 6, 1, 6, 1, 1, 5, 3, 2, 5, 3, 4, 2, 3, 6, 3, 1, 3, 5, 6, 2, 3, 2, 2, 6, 1, 5, 6, 4, 1, 6, 6, 5, 3, 2, 1, 1, 1, 1, 5, 2, 5, 1, 5, 1, 6, 4, 5, 3, 6, 5, 4, 2, 5, 4, 6, 5, 1, 5, 6, 3, 3, 5, 1, 4, 5, 1, 1, 2, 5, 6, 6, 1, 2, 1, 6, 6, 5, 3, 2, 4, 5, 6, 5, 3, 4, 1, 2, 4, 2, 4, 6, 3, 6, 1, 5, 2, 5, 4, 6, 1, 2, 2, 2, 1, 2, 6, 6, 5, 4, 5, 4, 2, 5, 4, 3, 4, 1, 4, 1, 3, 1, 2, 5, 4, 2, 4, 4, 5, 3, 2, 5, 4, 5, 4, 3, 6, 3, 4, 5, 4, 5, 6, 6, 3, 1, 3, 3, 3, 3, 2, 3, 4, 4, 2, 6, 5, 2, 2, 1, 4, 4, 5, 6, 5, 1, 4, 5, 5, 4, 5, 4, 6, 2, 4, 5, 6, 4, 2, 2, 1, 3, 6, 5, 6, 3, 3, 3, 5, 1, 1, 6, 4, 3, 3, 6, 2, 4, 2, 3, 6, 1, 6, 2, 1, 5, 3, 6, 2, 6, 5, 5, 3, 4, 2, 4, 4, 5, 1, 2, 5, 6, 1, 3, 4, 3, 6, 6, 5, 4, 3, 6, 2, 6, 6, 3, 2, 4, 2, 4, 5, 2, 2, 2, 2, 4, 1, 1, 2, 5, 6, 5, 3, 3, 3, 1, 1, 6, 4, 2, 1, 1, 3, 5, 2, 5, 3, 5, 5, 6, 5, 5, 2, 3, 5, 4, 6, 3, 2, 1, 6, 4, 5, 3, 5, 1, 1, 1, 6, 6, 3, 6, 6, 3, 6, 5, 1, 4, 5, 1, 2, 1, 2, 1, 1, 4, 6, 2, 2, 2, 4, 4, 2, 2, 4, 1, 3, 6, 5, 1, 6, 4, 2, 6, 1, 5, 3, 2, 4, 6, 2, 4, 3, 4, 3, 4, 6, 5, 3, 6, 3, 2, 4, 3, 5, 5, 5, 6, 1, 4, 6, 1, 6, 4, 2, 5, 3, 5, 4, 6, 5, 5, 3, 4, 2, 5, 3, 3, 5, 6, 2, 1, 4, 5, 2, 3, 3, 2, 3, 5, 5, 6, 3, 4, 4, 3, 3, 5, 3, 2, 4, 4, 3, 3, 3, 1, 4, 6, 6, 6, 2, 1, 2, 6, 6, 4, 6, 4, 1, 1, 6, 3, 1, 5, 4, 6, 4, 3, 1, 6, 1, 4, 5, 4, 4, 5, 4, 5, 5, 6, 6, 1, 4, 2, 5, 3, 5, 2, 1, 6, 6, 6, 2, 1, 3, 3, 6, 3, 3, 4, 1, 4, 2, 2, 6, 4, 4, 4, 4, 1, 6, 3, 2, 1, 1, 2, 3, 6, 5, 6, 2, 3, 2, 2, 5, 5, 4, 4, 1, 2, 4, 3, 6, 4, 6, 2, 6, 2, 1, 3, 3, 1, 4, 2, 4, 6, 5, 6, 6, 5, 1, 1, 3, 2, 2, 4, 1, 4, 4, 5, 5, 3, 5, 1, 1, 3, 2, 2, 4, 5, 1, 4, 2, 3, 3, 6, 3, 2, 2, 6, 6, 3, 4, 5, 2, 5, 1, 4, 2, 4, 6, 3, 5, 1, 2, 4, 2, 1, 3, 5, 2, 3, 5, 5, 2, 5, 1, 1, 4, 3, 3, 6, 3, 4, 2, 1, 3, 1, 6, 1, 5, 1, 5, 5, 2, 5, 6, 1, 1, 3, 2, 5, 2, 4, 3, 5, 6, 2, 5, 3, 6, 1, 4, 6, 6, 1, 4, 5, 3, 4, 4, 2, 6, 2, 4, 5, 3, 2, 4, 5, 2, 4, 1, 6, 2, 2, 1, 4, 4, 6, 2, 3, 5, 2, 4, 2, 2, 5, 5, 5, 5, 2, 6, 3, 1, 5, 5, 5, 3, 6, 1, 6, 6, 5, 3, 3, 1, 6, 3, 4, 4, 5, 1, 2, 2, 2, 5, 1, 5, 4, 6, 6, 4, 5, 2, 5, 5, 4, 1, 1, 3, 4, 5, 6, 3, 2, 2, 2, 2, 4, 2, 3, 2, 4, 1, 6, 6, 3, 3, 5, 1, 3, 6, 1, 6, 6, 4, 4, 5, 1, 2, 6, 6, 5, 4, 3, 5, 1, 4, 2, 4, 1, 1, 5, 3, 6, 6, 5, 1, 4, 5, 6, 2, 3, 4, 3, 6, 1, 1, 2, 2, 4, 2, 1, 2, 5, 4, 1, 2, 1, 3, 1, 4, 1, 1, 2, 5, 1, 2, 1, 6, 4, 1, 1, 1, 1, 3, 4, 1, 1, 3, 3, 2, 2, 4, 4, 1, 2, 5, 3, 1, 2, 4, 6, 1, 5, 3, 3, 4, 5, 5, 6, 4, 2, 3, 3, 1, 3, 3, 3]
每一面出现的频率:
[163, 166, 151, 173, 179, 168]

3 同时投掷2枚骰子

代码:

'''投2个骰子'''
die1=Die()#实例化第一个骰子,6个点
die2=Die(8)#实例化第二个骰子,8个点
results_die=[]#投掷结果
frequencies_die=[]#出现的频率
for value in range(1000):result_die1=die1.roll()#存入第一个骰子的点数result_die2=die2.roll()#存入第二个骰子的点数results_die.append(result_die1+result_die2)#计算投掷的点数
print(f"两个骰子投掷的点数:\n{results_die}")#计算点数出现的频率
max_result=die1.num_sides+die2.num_sides
for value in range(2,max_result+1):frequency_die=results_die.count(value)#计算各点数出现的频率frequencies_die.append(frequency_die)#存入列表中
print(f"两个骰子投掷的频率:\n{frequencies_die}")'''可视化输出,柱状图显示出现的频率'''
from plotly.graph_objs import Bar,Layout
from plotly import offline
# 对结果进行可视化。
x_values = list(range(2, max_result + 1))
data = [Bar(x=x_values, y=frequencies_die)]
x_axis_config = {'title': '结果'}#x坐标label
y_axis_config = {'title': '结果的频率'}#y坐标label
#设置图标的title
my_layout = Layout(title=f"同时掷1个{die1.num_sides}个点和1个{die2.num_sides}个点的骰子 1000 次的结果",xaxis=x_axis_config, yaxis=y_axis_config)
offline.plot({'data': data, 'layout': my_layout}, filename='d12.html')

结果:按照概率是符合实际的

两个骰子投掷的点数:
[7, 7, 11, 9, 11, 2, 10, 9, 10, 6, 10, 12, 3, 7, 5, 14, 9, 5, 9, 8, 10, 8, 5, 11, 9, 10, 8, 6, 9, 4, 7, 6, 6, 5, 7, 8, 10, 6, 12, 5, 12, 8, 3, 3, 10, 10, 7, 8, 14, 4, 9, 9, 14, 8, 5, 8, 7, 10, 8, 11, 14, 11, 13, 7, 12, 10, 9, 6, 7, 5, 9, 5, 6, 9, 10, 12, 5, 7, 8, 9, 11, 4, 5, 4, 7, 3, 12, 12, 10, 10, 6, 7, 10, 6, 6, 8, 12, 4, 11, 4, 3, 10, 5, 7, 9, 8, 10, 7, 9, 10, 7, 4, 9, 10, 8, 9, 7, 10, 2, 3, 6, 6, 4, 7, 8, 5, 11, 10, 8, 8, 8, 9, 12, 6, 7, 10, 3, 10, 3, 9, 9, 7, 7, 3, 4, 5, 9, 4, 6, 2, 5, 10, 12, 5, 6, 11, 9, 7, 9, 8, 9, 5, 5, 12, 8, 7, 8, 7, 10, 9, 9, 7, 12, 10, 6, 10, 12, 6, 6, 8, 5, 2, 7, 11, 10, 9, 6, 14, 5, 6, 11, 14, 6, 8, 5, 9, 7, 14, 8, 10, 7, 10, 10, 9, 12, 5, 8, 6, 4, 13, 12, 6, 4, 7, 7, 12, 13, 9, 5, 7, 11, 4, 10, 9, 11, 13, 13, 7, 10, 7, 9, 13, 7, 9, 10, 7, 9, 11, 6, 10, 11, 6, 8, 5, 3, 13, 8, 8, 12, 14, 9, 10, 7, 12, 7, 10, 6, 6, 7, 2, 8, 4, 5, 5, 8, 9, 13, 14, 13, 2, 13, 13, 9, 8, 7, 7, 10, 7, 7, 5, 10, 5, 4, 13, 2, 6, 8, 10, 10, 8, 10, 7, 10, 7, 10, 7, 12, 8, 12, 6, 8, 9, 5, 8, 6, 9, 5, 11, 5, 10, 7, 6, 7, 4, 9, 11, 12, 7, 3, 11, 10, 7, 13, 9, 10, 9, 11, 13, 9, 7, 9, 9, 7, 7, 9, 4, 5, 9, 10, 12, 2, 13, 12, 10, 12, 13, 5, 11, 7, 4, 9, 14, 7, 7, 5, 11, 11, 8, 11, 8, 9, 10, 12, 12, 11, 5, 7, 7, 6, 5, 5, 14, 8, 7, 2, 4, 8, 4, 6, 7, 5, 6, 7, 13, 10, 14, 4, 8, 9, 4, 10, 7, 12, 12, 11, 7, 6, 5, 4, 8, 3, 10, 3, 9, 12, 6, 6, 5, 9, 11, 5, 5, 5, 5, 8, 8, 10, 10, 5, 4, 6, 6, 2, 2, 12, 9, 7, 8, 11, 5, 9, 6, 5, 8, 9, 6, 10, 10, 13, 5, 8, 12, 6, 10, 10, 8, 10, 3, 11, 10, 9, 9, 9, 5, 13, 6, 10, 8, 8, 6, 6, 9, 6, 10, 6, 6, 9, 11, 10, 12, 11, 4, 6, 6, 9, 11, 5, 11, 10, 3, 11, 7, 6, 7, 6, 8, 10, 7, 10, 6, 7, 4, 6, 8, 5, 7, 12, 12, 8, 8, 9, 8, 4, 2, 12, 8, 6, 7, 5, 7, 9, 6, 8, 12, 8, 2, 8, 10, 7, 9, 6, 13, 11, 8, 9, 10, 8, 9, 6, 6, 6, 8, 6, 7, 7, 8, 7, 11, 13, 9, 6, 8, 5, 10, 9, 11, 6, 9, 8, 8, 6, 3, 7, 9, 11, 5, 12, 7, 7, 11, 8, 7, 14, 4, 7, 7, 4, 10, 7, 5, 6, 11, 7, 8, 14, 9, 7, 9, 12, 7, 7, 3, 9, 5, 9, 8, 6, 11, 5, 7, 2, 11, 5, 6, 13, 8, 9, 10, 9, 9, 9, 9, 6, 8, 3, 8, 10, 7, 4, 3, 7, 8, 5, 6, 10, 9, 8, 7, 7, 8, 9, 6, 11, 4, 7, 2, 12, 4, 6, 6, 14, 3, 8, 7, 7, 8, 5, 5, 10, 6, 9, 7, 14, 10, 13, 11, 6, 9, 11, 7, 4, 10, 2, 14, 11, 10, 5, 9, 9, 5, 9, 4, 7, 10, 6, 7, 9, 7, 12, 12, 6, 4, 10, 11, 8, 6, 12, 10, 9, 5, 5, 6, 9, 5, 13, 7, 9, 8, 13, 10, 4, 4, 7, 7, 12, 9, 13, 3, 5, 7, 5, 11, 9, 11, 10, 2, 12, 14, 9, 8, 12, 5, 12, 13, 8, 13, 2, 3, 6, 7, 6, 7, 8, 11, 9, 10, 9, 5, 8, 12, 7, 3, 7, 7, 7, 9, 13, 10, 7, 8, 5, 9, 9, 6, 11, 8, 11, 4, 9, 11, 11, 7, 11, 6, 10, 10, 12, 12, 5, 10, 8, 7, 5, 11, 12, 13, 11, 9, 11, 8, 5, 9, 10, 8, 8, 8, 10, 10, 12, 6, 8, 14, 9, 12, 11, 12, 7, 8, 9, 11, 7, 6, 10, 7, 9, 5, 8, 6, 6, 9, 9, 7, 4, 11, 12, 4, 9, 4, 4, 10, 10, 7, 4, 8, 8, 6, 11, 12, 6, 5, 10, 8, 5, 8, 6, 7, 11, 10, 6, 6, 8, 5, 11, 13, 7, 2, 10, 9, 4, 9, 6, 5, 7, 10, 5, 4, 6, 9, 9, 10, 4, 6, 13, 9, 10, 9, 8, 7, 5, 12, 6, 4, 9, 13, 11, 3, 12, 11, 6, 12, 9, 14, 7, 11, 6, 7, 4, 8, 9, 9, 7, 14, 8, 9, 8, 2, 10, 10, 11, 8, 10, 10, 11, 8, 7, 2, 10, 10, 10, 11, 9, 4, 4, 3, 7, 8, 10, 7, 10, 7, 7, 10, 7, 14, 3, 11, 3, 9, 11, 6, 9, 11, 4, 14, 4, 5, 6, 10, 2, 12, 10, 10, 4, 10, 12, 3, 10, 9, 11, 8, 7, 9, 11, 6, 6, 12, 3, 10, 7, 12, 11, 4, 6, 10, 12, 9, 4, 7, 5, 3, 10, 7, 6, 4, 12, 7, 11, 5, 14, 9, 8, 8, 8, 5, 9, 13, 6, 7, 9, 8, 7, 7, 4, 11, 8, 5, 6, 7, 10, 4, 11, 9, 9, 2, 7, 9, 9, 4, 3, 12]
两个骰子投掷的频率:
[23, 31, 59, 85, 105, 138, 110, 130, 118, 78, 65, 34, 24]

参考资料《python编程:从入门到实践》

Python-投骰子(random,plotly)相关推荐

  1. Python投骰子小游戏

    今天我们用Python来实现一个投骰子小游戏,这个小游戏比之前写的要复杂一点点,不过大家不用担心,只要大家掌握了基本的语句就可以写出来了 游戏具体内容如下: #投骰子 #玩两个骰子 : 1-6 #1. ...

  2. python投掷骰子实验实验结论_博饼伤我心我,决定用Python对投骰子(色子)做数据分析...

    pygal 是非常不错的 python 可视化包,它可以生成矢量图,从而在不同尺寸的屏幕上都可以获得良好的显示效果.具体安装使用请参考官方文档.今天小狼举个投骰子的栗子,看一下不同点数的概率分布情况. ...

  3. 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输

    抱歉,Xposed真的可以为所欲为--4.猜拳投骰子你能赢算我输 标签: 2018 一句话概括本文 人品大法利用Xposed Hook掉微信猜拳和投骰子,让你无需再担忧拿外卖和搞卫生. 引言 关于这节 ...

  4. python掷骰子_用于掷骰子的Python程序(2人骰子游戏)

    python掷骰子 Here, we will be going to design a very simple and easy game and implement it using abstra ...

  5. python摇骰子游戏小案例

    python摇骰子游戏小案例 小案例: import random#充值函数 def topup():global moneyn = input('充值金额(100元等于30个金币充值金额不低于100 ...

  6. Python地理可视化:plotly绘制mapbox地图热力密度图

    Python地理可视化:plotly绘制mapbox地图热力密度图 import plotly.graph_objects as go import numpy as npKEYS = ['中心点经纬 ...

  7. python 投掷骰子实验

    python 投掷骰子实验 import randomdef roll(sides=6):num_rolled = None'*** 随机产生1-6之间的整数 ***'num_rolled = ran ...

  8. python实现骰子游戏

    用python实现骰子游戏 源代码如下: import random as r player1win = 0 player2win = 0 draw = 0 num = int(input('局数:' ...

  9. 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输(转载)

    一句话概括本文 人品大法利用Xposed Hook掉微信猜拳和投骰子,让你无需再担忧拿外卖和搞卫生. 引言 关于这节,我是看代码看到头皮发麻,逆向APP并没有想想中的简单, 特别是微信这种,要投入的学 ...

最新文章

  1. 树链剖分 ---- 2021杭电多校 1002 I love tree[详解]
  2. linux时间 a x z,关于linux的命令一个莫名的想法,a到z有哪些命令
  3. java_method_下拉框成json
  4. 好品山东谋定产业扶贫-农业大健康·万祥军:乡村振兴行动
  5. 轻芒阅读距离今日头条还差一个即刻
  6. visual studio c/c++报错:向“printf”传递了额外参数: _Param_(2) 未由格式字符串使用
  7. 反思Code Review的注意点与目的
  8. ABAP新的关键字:BASE
  9. 数据结构基础(3)---C语言实现单链表
  10. linux下定时执行sh
  11. 把应用服务写成系统服务
  12. 语音控制系统(1)-----项目前言
  13. 电脑系统运行框代码大全
  14. php缩图代码是什么,php生成缩略图的类代码
  15. python process 函数_Python使用进程Process模块管理资源
  16. 面试高频智力题 100层楼两个鸡蛋找出临界点的最多次数 (直接分析法,非动态规划思路)
  17. IDEA使用database时,连接MySQL后schemas不显示数据库名的情况
  18. C#根据工作经验来谈谈面向对象
  19. Python数据分析高薪实战第四天 构建国产电视剧评分数据集
  20. 区块链 重塑不良资产互信机制

热门文章

  1. zblog模板怎么安装?zblog主题安装教程
  2. 心动预警,日播近1000w的萌娃账号,为何令人如此上头?
  3. ArchiCAD 24 Mac版3D建筑模型设计和分析软件新功能介绍
  4. 【计算机考研择校】浙江工业大学2022考情分析
  5. P2P理财项目四个月开发总结
  6. 用TypeScript、JavaScript实现PDF转图片
  7. 北京交通大学全日制硕士专业学位研究生计算机技术培养方案,北京交通大学交通运输学院专业型硕士研究生培养方案.PDF...
  8. 【SwiftUI模块】0004、SwiftUI-<探探App>喜欢手势卡片
  9. “天天快报”涉黄突然被下架?官方回应
  10. UltraEdit调整一行显示的十六进制的字符个数