在無偏見的投幣機中,H或T發生50%的次數。如何模擬python中偏向硬幣的翻轉?
但我想模擬硬幣,它給概率'p'的H和概率'(1-p)'的T。
是這樣的:
def flip(p):
'''this function return H with probability p'''
# do something
return result
>> [flip(0.8) for i in xrange(10)]
[H,H,T,H,H,H,T,H,H,H]
在無偏見的投幣機中,H或T發生50%的次數。如何模擬python中偏向硬幣的翻轉?
但我想模擬硬幣,它給概率'p'的H和概率'(1-p)'的T。
是這樣的:
def flip(p):
'''this function return H with probability p'''
# do something
return result
>> [flip(0.8) for i in xrange(10)]
[H,H,T,H,H,H,T,H,H,H]
random.random()
在範圍[0返回均勻分佈僞隨機浮點數,1)。此數字小於給定數字p
,範圍爲[0,1),概率爲p
。因此:
def flip(p):
return 'H' if random.random() < p else 'T'
一些實驗:
>>> N = 100
>>> flips = [flip(0.2) for i in xrange(N)]
>>> float(flips.count('H'))/N
0.17999999999999999 # Approximately 20% of the coins are heads
>>> N = 10000
>>> flips = [flip(0.2) for i in xrange(N)]
>>> float(flips.count('H'))/N
0.20549999999999999 # Better approximation
import random
def flip(p):
return (random.random() < p)
一個返回boolean值,然後您可以使用選擇H或T(或任何兩個值之間選擇),你想要的。您也可以在方法中包含選項:
def flip(p):
if random.random() < p:
return 'H'
else:
return 'T'
但是這種方式通常不會那麼有用。
導入0之間的隨機數 - 1(可使用randrange功能)
如果數字爲上述(1-P),返回尾巴。
否則,返回頭
你想要的 「偏見」 是基於對稱distribuition?或者也許是指數分佈?高斯人?
那麼,這裏是所有的方法,從隨機文件本身提取。
首先,三角形分佈的一個例子:
print random.triangular(0, 1, 0.7)
random.triangular(low, high, mode)
:返回一個隨機浮點數
N
使得low <= N < high
和 與 邊界之間的指定的模式。low
和high
界限 默認爲零和一個。mode
參數默認爲邊界之間的中點 ,給出對稱的 分佈。
random.betavariate(alpha, beta)
:Beta分佈。參數條件是
alpha > 0
和beta > 0
。返回值範圍在0
和1
之間。
random.expovariate(lambd)
:指數分佈。
lambd
是1.0
除以所需的平均值。它應該是 是非零。 (該參數將是 稱爲「lambda
」,但是這是在Python 保留字。)返回 值的範圍從0
到正 無窮如果lambd
是正的,並且 從負無窮到0
如果lambd
是負數。
random.gammavariate(alpha, beta)
:Gamma分佈。 (不是gamma 函數!) 參數的條件是
alpha > 0
和beta > 0
。
random.gauss(mu, sigma)
:高斯分佈。
mu
是平均值,而sigma
是標準差 。這比以下定義的normalvariate()
函數 稍快 。
random.lognormvariate(mu, sigma)
:數正態分佈。如果您採用 這個 分佈的自然對數,您將得到一個正態分佈 ,分佈均值爲
mu
和標準 偏差sigma
。mu
可以有任何 值,並且sigma
必須大於 零。
random.normalvariate(mu, sigma)
:正態分佈。
mu
是平均值, 和sigma
是標準差。
random.vonmisesvariate(mu, kappa)
:
mu
是平均角度,0
和2*pi
,和kappa
之間表達 弧度是濃度參數,該參數 必須大於或等於零。 如果kappa
等於零,這 分佈在範圍0
到2*pi
降低至均勻 隨機角度。
random.paretovariate(alpha)
:帕累託分佈。
alpha
是 形狀參數。
random.weibullvariate(alpha, beta)
Weibull分佈。
alpha
是 比例參數,而beta
是 參數的形狀。
非常豐富。 – 2009-01-28 04:21:48
如何:
import numpy as np
n, p = 1, .33 # n = coins flipped, p = prob of success
s = np.random.binomial(n, p, 100)
1:如果不是`更好{TRUE: 'H',假: 'T'} [random.random()
2009-01-25 14:13:42