Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 掷2个骰子1000次,计算两个骰子命中的次数之和_Python_Arrays_For Loop_Dice - Fatal编程技术网

Python 掷2个骰子1000次,计算两个骰子命中的次数之和

Python 掷2个骰子1000次,计算两个骰子命中的次数之和,python,arrays,for-loop,dice,Python,Arrays,For Loop,Dice,作业要求我们通过实验找出2到12的概率之和。我们要掷两个骰子1000次,并计算总和为2,3,…,和12的次数。到目前为止,我已经把它作为我的代码,但是我无法得到教授要求的输出。 到目前为止,我所拥有的: import random as r die_1 = r.randint(1,6) die_2 = r.randint(1,6) print('For-Loop') for i in range(2,13): r.seed(1) counter = 0 for j

作业要求我们通过实验找出2到12的概率之和。我们要掷两个骰子1000次,并计算总和为2,3,…,和12的次数。到目前为止,我已经把它作为我的代码,但是我无法得到教授要求的输出。

到目前为止,我所拥有的:

import random as r

die_1 = r.randint(1,6)
die_2 = r.randint(1,6)


print('For-Loop')
for i in range(2,13):
    r.seed(1)
    counter = 0
    for j in range(1000):
        if i == r.randint(2,12):
            counter = counter + 1
    print("sum = ", i,  " count = ",  counter)

你没有正确地解释这些可能性
r.randint(2,12)
与单独滚动两个模具不同(对于某些值,它们是两个模具的多个滚动,总和为相同值)

如果不想导入标准库的其他部分,可以自己制作计数器

import random

print("For Loop")
occurrences = {}
for trial in range(1000):
    die1 = random.randint(1, 6)
    die2 = random.randing(1, 6)
    roll = die1 + die2
    current = occurrences.setdefault(roll, 0)
    occurrences[roll] = current + 1

for roll, count in occurrences.items():
    print(f"sum = {roll} count = {count}")

请注意,输出将略有不同,因为它们当然是随机的。

我已尝试解释评论中发生的一切:

from random import randint

rolls = [sum([randint(1, 6), randint(1, 6)]) for i in range(1000)]

for i in range(2, 13):
    print(f'Sum of {i} was rolled {rolls.count(i)} times')
从集合导入defaultdict
从随机导入randint
#掷两个骰子多少次?
n=1000
#创建一个字典来存储结果
结果=defaultdict(int)
#循环n次
对于范围内的u(n):
#获取两个骰子的随机数
die_1=randint(1,6)
die_2=randint(1,6)
#将相应的结果增加1
结果[die_1+die_2]+=1
#打印结果
打印(结果)
这可能会打印如下内容:

defaultdict(,{7:160,8:134,6:145,9:107,3:50,10:76,12:26,4:86,5:128,2:37,11:51})
您还可以使用绘图轻松地说明结果:

导入matplotlib.pyplot作为plt
plt.bar(results.keys(),results.values())
plt.show()

你掷骰子
11*1000次。这没什么大不了的,但你的描述有所不同。@finefoot并不意味着链接到图片-他/她指的是请将代码粘贴到问题正文中。你不说她在寻找什么,但概率在0到1之间,所以,也许只是把你的价值除以你所有价值的总和,但我无法得到教授要求的结果。这是什么意思?@c_Saenz71你成功了吗?:)请不要忘记对有用的答案进行投票,并接受最有用的答案。如果您想知道为什么图看起来像这个OP,两个好分布的卷积很好,
N(\mu,\sigma)
是所有分布中最好的,甚至是离散的;)二项式定理
from random import randint

rolls = [sum([randint(1, 6), randint(1, 6)]) for i in range(1000)]

for i in range(2, 13):
    print(f'Sum of {i} was rolled {rolls.count(i)} times')