国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用random和tertools模塊解一些經典概率問題

2020-02-23 06:22:12
字體:
來源:轉載
供稿:網友

random 模塊中的常用函數
代碼如下:
random()
返回一個位于區間 [0,1] 內的實數;
uniform(a, b)
返回一個位于區間 [a,b] 內的實數;
randint(a, b)
返回一個位于區間 [a,b] 內的整數;
choice(sequence)
返回一個位于 sequence 中的元素,其中,sequence 為一個有序序列,如 list、string 或者 tuple 等類型;
randrange([start], stop[, step])
等效于 choice(range([start], stop[, step]));
shuffle(sequence [, random])
無返回值,用于打亂 sequence 中元素的排列順序;
sample(sequence, n)
返回一個由 n 個 sequence 中的元素組成的分片,其中,sequence 也可以是 set 類型。

利用 itertools 得到排列、組合
代碼如下:
permutations(sequence, k))
從序列 sequence 中得到包含 k 個元素的所有排列。

combinations(sequence, k))
從序列 sequence 中得到包含 k 個元素的所有組合。

羊車門問題

有一個抽獎節目,臺上有三扇關閉的門,一扇門后面停著汽車,其余門后都是山羊,只有主持人知道每扇門后面是什么。參賽者可以選擇一扇門,在開啟它之前,主持人會開啟另外一扇門,露出門后的山羊,然后允許參賽者更換自己的選擇。問題是:參賽者更換選擇后能否增加贏得汽車的機會?

有很多時候,我們并不知道自己的理論分析正確與否,但如果知道概率論中的 大數定律,又碰巧懂一點編程,無疑可以利用計算機重復模擬事件以求解問題。該問題的 Python 3.x 解答程序如下:
代碼如下:
from random import *

def once(doors = 3):  # 一次事件的模擬
 car = randrange(doors) # 一扇門后面停著汽車
 man = randrange(doors) # 參賽者預先選擇一扇門
 return car == man # 參賽者是否最初就選擇到車

h = 0 # 堅持選擇贏得汽車的次數                   
c = 0 # 改變選擇贏得汽車的次數
times = int(1e6) # 重復實驗的次數

for i in range(times):
 if once(): h += 1
 else:  c += 1

print("維持選擇:",h/times*100,"%/n改變選擇:",c/times*100,"%")

運行結果:

維持選擇: 33.268 %
改變選擇: 66.732 %

撲克牌問題

概率論給我們帶來了很多匪夷所思的反常結果,條件概率尤其如此。譬如:

四個人打撲克,其中一個人說,我手上有一個 A。請問他手上有不止一個 A 的概率是多少?
四個人打撲克,其中一個人說,我手上有一個黑桃 A。請問他手上有不止一個 A 的概率又是多少?
代碼如下:
from random import *

cards = [i for i in range(52)]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海宁市| 尚义县| 孝义市| 黄冈市| 聊城市| 嫩江县| 宁明县| 天气| 紫金县| 南雄市| 普陀区| 府谷县| 绥棱县| 景洪市| 东光县| 吉林市| 福州市| 建德市| 承德县| 宜城市| 长泰县| 岑溪市| 南澳县| 平利县| 民权县| 时尚| 佛山市| 庆阳市| 桐庐县| 山东省| 富宁县| 仁布县| 钟祥市| 江永县| 稷山县| 同心县| 安徽省| 张家港市| 普洱| 榆树市| 德庆县|