随机程序
掷骰子
import random
def rollDie():
"""返回一个1~6的随机整数"""
return random.choice([1,2,3,4,5,6])
def rollN(n):
result = ''
for i in range(n):
result = result + str(rollDie())
print(result)
>>>rollN(5)
31441
- random.choice接受一个非空序列作为参数,然后返回一个从序列中随机选择的元素。
- random中几乎所有函数都以random.random为基础,它会生成一个0.0~1.0的随机浮点数。
相互独立
在随机过程中,如果一个事件的结果不会影响另一个事件的结果,我们就称这两个事件是相互独立的。
计算简单概率
概率
一般来说,当我们讨论具有某种特性的结果的概率时,实际上是想知道在所有结果中,具有这种特性的结果占多少比例。这就是概率取值范围在0~1的原因。
独立概率的乘法法则
举例来说,考虑两个独立事件A和B。如果A发生的概率是1/3, B发生的概率是1/4,那么A和B同时发生的概率就是(1/3) × (1/4)。
统计推断
统计推断的指导原则
一个从总体数据中随机抽取的样本往往可以表现出与总体相同的特性。
抛硬币
def flip(numFlips):
"""假设numFlips是一个正整数"""
heads = 0
for i in range(numFlips):
if random.choice(('H', 'T')) == 'H':
heads += 1
return heads/numFlips
def flipSim(numFlipsPerTrial, numTrials):
"""假设numFlipsPerTrial和numTrials是正整数"""
fracHeads = []
for i in range(numTrials):
fracHeads.append(flip(numFlipsPerTrial))
mean = sum(fracHeads)/len(fracHeads)
return mean
- numTrials表示进行实验的次数,numFlipsPerTrial表示每次实验的次数
- 函数flip可以模拟抛掷一个均匀的硬币numFlips(numFlipsPerTrial)次,然后返回正面向上的比例。
- 对于每次抛掷,它都会调用random.choice((‘H’, ‘T’))随机地返回一个’H’或’T’。
>>>flipSim(10, 1)
0.8
>>>flipSim(10, 100)
0