zoukankan      html  css  js  c++  java
  • 使用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')

  • 相关阅读:
    html5标签---不常用新标签的整理
    拖拽demo--兼容--全局捕获
    Linux now!--网络配置
    windows下 memcached 和 redis 服务器安装
    MySQL5.6安装步骤(windows7/8_64位)
    zend 环境
    mysql自增id超大问题查询
    烦人的运营后台导出大批量数据
    kafka环境搭建和使用(python API)
    分布式系统中zookeeper实现配置管理+集群管理
  • 原文地址:https://www.cnblogs.com/exciting/p/9011619.html
Copyright © 2011-2022 走看看