统计抛硬币的结果
Tallying the outcome of a coin flip
我已经编写了一小段代码来对抛硬币的结果进行建模,并且想找到一种比连续抛硬币的列表更好的方式来呈现结果。作为我的物理学学位的一部分,我学习 Python 一个月了,如果这有助于提供一些背景的话。
这是代码;
from pylab import *
x=0
while x<=100:
num = randint(0,2)
if num == 0:
print 'Heads'
else:
print 'Tails'
x=x+1
print 'Done'
我有哪些选择可以以更易于理解的方式呈现这些数据?
不是使用 while
循环并将结果打印到屏幕上,Python 可以使用 Counter
进行计数并非常整齐地存储结果,这是内置字典容器。
例如:
from collections import Counter
import random
Counter(random.choice(['H', 'T']) for _ in range(100))
当我运行代码时,它产生了以下计数:
Counter({'H': 52, 'T': 48})
我们可以看到正面被翻转了 52 次,反面被翻转了 48 次。
这已经很容易解释了,但是现在您已经拥有数据结构中的数据,您还可以绘制一个简单的条形图。
按照 Stack Overflow 答案 here 中的建议,您可以这样写:
import matplotlib.pyplot as plt
# tally = Counter({'H': 52, 'T': 48})
plt.bar(range(len(tally)), tally.values(), width=0.5, align='center')
plt.xticks(range(len(tally)), ['H', 'T'])
plt.show()
这会生成一个如下所示的条形图:
我已经编写了一小段代码来对抛硬币的结果进行建模,并且想找到一种比连续抛硬币的列表更好的方式来呈现结果。作为我的物理学学位的一部分,我学习 Python 一个月了,如果这有助于提供一些背景的话。
这是代码;
from pylab import *
x=0
while x<=100:
num = randint(0,2)
if num == 0:
print 'Heads'
else:
print 'Tails'
x=x+1
print 'Done'
我有哪些选择可以以更易于理解的方式呈现这些数据?
不是使用 while
循环并将结果打印到屏幕上,Python 可以使用 Counter
进行计数并非常整齐地存储结果,这是内置字典容器。
例如:
from collections import Counter
import random
Counter(random.choice(['H', 'T']) for _ in range(100))
当我运行代码时,它产生了以下计数:
Counter({'H': 52, 'T': 48})
我们可以看到正面被翻转了 52 次,反面被翻转了 48 次。
这已经很容易解释了,但是现在您已经拥有数据结构中的数据,您还可以绘制一个简单的条形图。
按照 Stack Overflow 答案 here 中的建议,您可以这样写:
import matplotlib.pyplot as plt
# tally = Counter({'H': 52, 'T': 48})
plt.bar(range(len(tally)), tally.values(), width=0.5, align='center')
plt.xticks(range(len(tally)), ['H', 'T'])
plt.show()
这会生成一个如下所示的条形图: