Python 蒙特卡洛方法模擬中獎問題

2021-09-26 03:42:59 字數 1496 閱讀 6165

中獎問題

遊戲中,有一種寶箱,開啟這個寶箱獲得傳奇**的概率是20%,現在你開啟5個這樣的寶箱,獲得傳奇**的概率是多少?

在該問題中我們做這樣乙個轉換:

用區間[0,1)來模擬開寶箱中獎情況,則用在0-1之間均勻分布的隨機數來表示我們開啟寶箱的標誌,如果隨機數落在[0,0.2)之間代表中獎,否則不中獎,中獎概率仍然為20%。

用**實現這個模擬開寶箱的過程:

#模擬開寶箱,每次模擬開啟n個箱子,winprizerate代表中獎率

def play(n,winprizerate):

for i in range(0,n):

#生成乙個在0到1之間均勻分布的隨機數作為**者**標誌

guess = random.random()

#**者**標誌落在抽中可能性範圍內即為中獎

if(guess蒙特卡洛思想是使用隨機數進行大量模擬得到模擬值,現在我們打算模擬計算每次遊戲開啟5個寶箱,最終獲得傳奇**的概率是多少?

#模擬n次,每次開啟n個箱子,winprizerate:每個箱子中獎可能性

def winrate(n,n,winprizerate):

win = 0

#i取值範圍為[0,n)

for i in range(0,n):

if(play(n,winprizerate)):

win += 1

print("中獎概率為:"+str(win/n))

完整**:

# -*- coding: utf-8 -*-  

import random

#模擬n次,每次開啟n個箱子,winprizerate:開一次箱子中獎可能性

def winrate(n,n,winprizerate):

win = 0

#i取值範圍為[0,n)

for i in range(0,n):

if(play(n,winprizerate)):

win += 1

print("中獎概率為:"+str(win/n))

#模擬開寶箱,每次模擬開啟n個箱子,winprizerate代表中獎率

def play(n,winprizerate):

for i in range(0,n):

#生成乙個在0到1之間均勻分布的隨機數作為**者**標誌

guess = random.random()

#**者**標誌落在抽中可能性範圍內即為中獎

可以看到中獎概率穩定在0.67左右

蒙特卡洛模擬 R語言 蒙特卡洛模擬計算

蒙特卡洛法的基本思想是 為了求解問題,首先建立乙個概率模型或隨機過程,使它的引數或數字特徵等於問題的解 然後通過對模型或過程的觀察或抽樣試驗來計算這些引數或數字特徵,最後給出所求解的近似值。解的精確度用估計值的標準誤差來表示。蒙特卡洛法的主要理論基礎是概率統計理論,主要手段是隨機抽樣 統計試驗。用蒙...

蒙特卡洛方法

蒙特卡洛方法 monte carlo method,也有翻譯成 蒙特卡羅方法 是以概率和統計的理論 方法為基礎的一種數值計算方法,將所求解的問題同一定的概率模型相聯絡,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。上述就是蒙特卡洛方法的基本概念,比較抽象,下面結合實際...

蒙特卡洛方法

這個演算法是用來求解積分和一些運算的,主要就是通過概率模擬的方法,比如對於 或者積分 import random def calpai n 1000000 r 1.0 a,b 0.0,0.0 x neg,x pos a r,a r y neg,y pos b r,b r count 0 for i ...