使用Pygal模拟掷骰子

Posted 山本夏木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Pygal模拟掷骰子相关的知识,希望对你有一定的参考价值。

在本节中,将使用Python可视化包Pygal来生成可缩放的矢量图形文件。

对于需要在尺寸不同的屏幕上显示的图表,这很有用,因为它们将自动缩放,以适合观看者的屏幕。

1.创建Die类

from random import randint

class Die():
    def __init__(self,num_sides=6):
        self.num_sides=num_sides
        
    def roll(self):
        return randint(1,self.num_sides)

 

2.分析1000次结果

from die import Die

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)
    
print(frequencies)

 

3.绘制直方图

import pygal
from die import Die

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)
    
hist=pygal.Bar()
hist.title=\'Result of rolling one D6 1000 times\'
hist.x_labels=[\'1\',\'2\',\'3\',\'4\',\'5\',\'6\']
hist.x_title="Result"
hist.y_title="Frequency of Result"

hist.add(\'D6\',frequencies)
hist.render_to_file(\'die_visual.svg\')

我们将图表渲染为一个SVG文件,使用web浏览器来查看生成的直方图:

 

4.同时掷两个面数不同的骰子50000次

import pygal
from die import Die

die_1=Die()
die_2=Die(10)

results=[]
for roll_num in range(50000):
    result=die_1.roll()+die_2.roll()
    results.append(result)
    
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)
    
hist=pygal.Bar()
hist.title=\'Result of rolling a D6 and a D10 50000 times\'
hist.x_labels=[\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'10\',\'11\',\'12\',\'13\',\'14\',\'15\',\'16\']
hist.x_title="Result"
hist.y_title="Frequency of Result"

hist.add(\'D6+D10\',frequencies)
hist.render_to_file(\'dice_visual.svg\')

 

以上是关于使用Pygal模拟掷骰子的主要内容,如果未能解决你的问题,请参考以下文章

python使用pygal模拟掷骰子模拟1000次可是结果相加不是1000,求大神解答

掷骰子

python之pygal:掷两个不同的骰子并统计大小出现次数

python之pygal:掷一个骰子统计次数并以直方图形式显示

Python开发模块:Pygal 绘制直方图

骰子赔率:模拟掷骰子游戏