大数の法則
前の演習で、モンテカルロ・シミュレーションは確率的な性質をもつため、各シミュレーション結果が大きく異なりうることを学びました。この演習では、大数の法則を活用して、多数回のシミュレーションの平均に基づき、2050年のインフレ率を推定します。
前の演習で作成した monte_carlo_inflation() 関数が利用できます。念のため、関数のコードを示します。
def monte_carlo_inflation(year, seed):
random.seed(seed)
inflation_rate = 8.6
yearly_increase = random.randint(1, 3)
for i in range(year - 2022):
inflation_rate = inflation_rate * ((100 + yearly_increase)/100)
return(inflation_rate)
numpy と random パッケージはすでにインポート済みです。
この演習はコースの一部です
Pythonで学ぶモンテカルロ・シミュレーション
演習の手順
- 毎回 0 から 20,000 の間でランダムに選んだシードを用い、1,000 回のシミュレーションの平均を計算します。
- 毎回 0 から 20,000 の間でランダムに選んだシードを用い、10,000 回のシミュレーションの平均を計算します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Calculate the average of 1,000 simulation results with a seed between 0 and 20000
rates_1 = []
for i in range(____):
seed = random.randint(____, ____)
rates_1.append(monte_carlo_inflation(2050, ____))
print(np.mean(rates_1))
# Calculate the average of 10,000 simulation results with a seed between 0 and 20000
rates_2 = []
for i in range(____):
seed = random.randint(____, ____)
rates_2.append(monte_carlo_inflation(2050, ____))
print(np.mean(rates_2))