Pra*_*are 25 python random probability coin-flipping sympy
在无偏硬币翻转中,H或T发生50%的次数.
但我想模拟硬币给出概率为'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]
Run Code Online (Sandbox Code Playgroud)
Fed*_*oni 45
random.random()返回[0,1]范围内均匀分布的伪随机浮点数.该数字小于p[0,1]范围内的给定数字且具有概率p.从而:
def flip(p):
return 'H' if random.random() < p else 'T'
Run Code Online (Sandbox Code Playgroud)
一些实验:
>>> 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
Run Code Online (Sandbox Code Playgroud)
你是否希望"偏见"基于对称分布?或者也许是指数分布?高斯有人吗?
好吧,以下是从随机文档中提取的所有方法.
首先,三角分布的一个例子:
print random.triangular(0, 1, 0.7)
Run Code Online (Sandbox Code Playgroud)
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分布.(不是伽玛函数!)参数的条件是
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)威布尔分布.
alpha是scale参数,beta是形状参数.
import random
def flip(p):
return (random.random() < p)
Run Code Online (Sandbox Code Playgroud)
这将返回一个布尔值,然后您可以使用它来选择您想要的 H 或 T(或在任何两个值之间进行选择)。您还可以在方法中包含选择:
def flip(p):
if random.random() < p:
return 'H'
else:
return 'T'
Run Code Online (Sandbox Code Playgroud)
但那样一般用处不大。
怎么样:
import numpy as np
n, p = 1, .33 # n = coins flipped, p = prob of success
s = np.random.binomial(n, p, 100)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31265 次 |
| 最近记录: |