python 由用户输入掷多少次骰子,然后统计每个面出现的次数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 由用户输入掷多少次骰子,然后统计每个面出现的次数相关的知识,希望对你有一定的参考价值。

# coding=utf-8
import random
n = input('投多少次骰子')
result = []
for i in range(n):
    x = random.randint(1, 6)
    print ('第%s次投骰子的结果为: %s' % (i+1, x))
    result.append(x)
for i in range(6):
    print ('出现%s的次数为: %s') % (i+1, result.count(i + 1))

参考技术A import numpy as np

n=int(raw_input('num:'))

cs=

for i in range(n):
num=np.random.randint(1,7)
if num not in cs:
cs[num]=1
else:
cs[num]+=1

for key in cs:
print '%s点出现%s次'%(key,cs[key])本回答被提问者采纳

使用pygal统计投掷N次骰子之后点数的分布情况

一、环境信息

python版本:2.7.13

pygal版本:2.4.0

pygal安装:pip install pygal 从python官方完整下载的最新的python版本自带pip

 

二、具体实现

投掷N次骰子,然后统计每个点数出现的数字。首先需要实现的是随机点数,具体代码如下:

dice.py
# -*- coding: utf-8 -*-
#pip install pygal

from random import randint

class Dice():
    """表示一个骰子的类"""

    def __init__(self, number_sides=6):
        """骰子默认为6面,称之为D6;如果是8面的骰子称之为D8"""
        self.number_sides = number_sides

    def roll(self):
        """返回一个位于1和骰子面数之间的随机值"""
        return randint(1, self.number_sides)

1、投掷一个6面的骰子(D6)10000次,查看每个点数的统计结果:

dice_visual.py
# -*- coding: utf-8 -*-

import pygal

from dice import Dice

#掷一个骰子
#创建一个D6
dice = Dice()

#将结果存储在一个列表中
results = []
for roll_number in range(10000):
    result = dice.roll()
    results.append(result)

#分析结果:计算每个点数出现的次数
frequencies = []
values = []
for value in range(1, dice.number_sides+1):
    frequency = results.count(value)    #lsit.count(ojb)用于统计某个元素列表中出现的次数。obj是列表中的元素
    frequencies.append(frequency)
    values.append(value)

#对结果进行可视化
hist = pygal.Bar()
#设置直方图的标题
hist.title = Results of rolling one D6 1000 times.
#设置x轴的值
hist.x_labels = values
#设置x轴的标签
hist.x_title = Result
#设置y轴的标题
hist.y_title = Frequency of Result
#将x轴标签的值添加到直方图中
hist.add(D6, frequencies)
#将这个直方图渲染为一个SVG文件。可以直接使用浏览器打开该文件
hist.render_to_file(dice_visual.svg)

打开生成的svg文件(可以用浏览器直接打开),结果图如下:

技术分享图片

 

2、同时投掷两个6面的骰子(D6)10000次,查看每个点数的统计结果,只需要修改dice_visual.py:

dice_visual.py

# -*- coding: utf-8 -*-

import pygal

from dice import Dice

#同时掷两个6面的骰子10000次
dice1 = Dice()
dice2 = Dice()

#将结果存储在一个列表中
results = []
for roll_number in range(10000):
    result1 = dice1.roll()
    result2 = dice2.roll()
    results.append(result1 + result2)

#分析结果:计算每个点数出现的次数
frequencies = []
values = []
for value in range(2, dice1.number_sides+dice2.number_sides+1):
    frequency = results.count(value)    #lsit.count(ojb)用于统计某个元素列表中出现的次数。obj是列表中的元素
    frequencies.append(frequency)
    values.append(value)

#对结果进行可视化
hist = pygal.Bar()
#设置直方图的标题
hist.title = Results of rolling one D6 1000 times.
#设置x轴的值
hist.x_labels = values
#设置x轴的标签
hist.x_title = Result
#设置y轴的标题
hist.y_title = Frequency of Result
#将x轴标签的值添加到直方图中
hist.add(D6 + D6, frequencies)
#将这个直方图渲染为一个SVG文件。可以直接使用浏览器打开该文件
hist.render_to_file(dice_visual.svg)
打开生成的svg文件(可以用浏览器直接打开),结果图如下:

技术分享图片

 

3、同时投掷一个6面的骰子(D6)和一个10面的骰子(D10)10000次,查看每个点数的统计结果,只需要修改dice_visual.py:

dice_visual.py
# -*- coding: utf-8 -*-

import pygal

from dice import Dice

#掷两个个骰子,一个6面,一个10面
dice1 = Dice()
dice2 = Dice(10)

#将结果存储在一个列表中
results = []
for roll_number in range(10000):
    result1 = dice1.roll()
    result2 = dice2.roll()
    results.append(result1 + result2)

#分析结果:计算每个点数出现的次数
frequencies = []
values = []
for value in range(2, dice1.number_sides+dice2.number_sides+1):
    frequency = results.count(value)    #lsit.count(ojb)用于统计某个元素列表中出现的次数。obj是列表中的元素
    frequencies.append(frequency)
    values.append(value)

#对结果进行可视化
hist = pygal.Bar()
#设置直方图的标题
hist.title = Results of rolling one D6 1000 times.
#设置x轴的值
hist.x_labels = values
#设置x轴的标签
hist.x_title = Result
#设置y轴的标题
hist.y_title = Frequency of Result
#将x轴标签的值添加到直方图中
hist.add(D6 + D10, frequencies)
#将这个直方图渲染为一个SVG文件。可以直接使用浏览器打开该文件
hist.render_to_file(dice_visual.svg)

打开生成的svg文件(可以用浏览器直接打开),结果图如下:

技术分享图片

 



以上是关于python 由用户输入掷多少次骰子,然后统计每个面出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

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

计蒜客 掷骰子 dp

在Java中的循环内增加一个变量

小学生蓝桥杯Python闯关 | 掷骰子

掷骰子 dp

记忆化搜索掷骰子 hpuoj