![](/img/trans.png)
[英]python program that Simulates the rolling of two six-sided dice for 1000 times and stores the sum values in a file
[英]Sum of simulation of the rolling of 2 six-sided dice with python
写一个2个六面骰子滚动的模拟。 你的程序应该有一个Roll()函数,它返回掷骰子的总和。 你可以假设六个方面中的每一个都同样可能被滚动(也就是说,骰子是“公平的”)。 运行模拟1000次并报告每次总和发生的频率。
到目前为止,我有这个,但我的程序似乎不会加总。 我可能完全错了。 请帮忙。 我认为我的主要问题在于我的印刷声明。 我需要输出打印2次显示总和的次数,3的总和,4的总和等到12。
def Roll():
for i in range(1000):
one = 0
two = 0
three = 0
four = 0
five = 0
six = 0
dice1= float(0)
dice2= float(0)
dice1 = random.randint(1,6)
if dice1 == 1:
one = one + 1
count= 1
return count
elif dice1 == 2:
two = two + 1
count= 1
return count
elif dice1 == 3:
three = three + 1
count= 1
return count
elif dice1 == 4:
four = four + 1
count= 1
return count
elif dice1 == 5:
five = five + 1
count= 1
return count
else:
six = six + 1
count= 1
return count
dice2 = random.randint(1,6)
if dice2 == 1:
one = one + 1
elif dice2 == 2:
two = two + 1
elif dice2 == 3:
three = three + 1
elif dice2 == 4:
four = four + 1
elif dice2 == 5:
five = five + 1
else:
six = six + 1
total = one + two + three + four + five + six
print("2", dice1 + dice2)
print("3", dice1 + dice2)
print("4", dice1 + dice2)
print("5", dice1 + dice2)
print("6", dice1 + dice2)
print("7", dice1 + dice2)
print("8", dice1 + dice2)
print("9", dice1 + dice2)
print("10", dice1 + dice2)
print("11", dice1 + dice2)
print("12", dice1 + dice2)
我已经回答了你的朋友同一个任务:
import random
from collections import defaultdict
def main():
dice = int(input("Enter the number of dice: "))
sides = int(input("Enter the number of sides: "))
rolls = int(input("Enter the number of rolls to simulate: "))
result = roll(dice, sides, rolls)
maxH = 0
for i in range(dice, dice * sides + 1):
if result[i] / rolls > maxH: maxH = result[i] / rolls
for i in range(dice, dice * sides + 1):
print('{:2d}{:10d}{:8.2%} {}'.format(i, result[i], result[i] / rolls, '#' * int(result[i] / rolls / maxH * 40)))
def roll(dice, sides, rolls):
d = defaultdict(int)
for _ in range(rolls):
d[sum(random.randint(1, sides) for _ in range(dice))] += 1
return d
main()
你可以拿出对你有用的部分。 这也应该包括后续问题,例如:“我如何整齐地打印”和“如何绘制直方图”。
例:
Enter the number of dice: 2
Enter the number of sides: 6
Enter the number of rolls to simulate: 1000
2 28 2.80% ######
3 59 5.90% #############
4 84 8.40% ###################
5 96 9.60% ######################
6 155 15.50% ####################################
7 170 17.00% ########################################
8 147 14.70% ##################################
9 102 10.20% #######################
10 80 8.00% ##################
11 50 5.00% ###########
12 29 2.90% ######
这是一个快速而肮脏的方法
from collections import Counter
import random
def roll():
return random.randint(1,6) + random.randint(1,6)
counter = Counter( roll() for _ in range(1000) )
for num, cnt in counter.iteritems():
print '%2d: %.3f' % (num, cnt / 1000.0)
结果
2: 0.022
3: 0.063
4: 0.072
5: 0.104
6: 0.154
7: 0.174
8: 0.141
9: 0.112
10: 0.077
11: 0.057
12: 0.024
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.