31

公平なコイントスでは、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]
4

7 に答える 7

54

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 
于 2009-01-25T06:17:59.213 に答える
10

「バイアス」を対称的な分布に基づいて作成しますか?または多分指数分布?ガウス誰ですか?

さて、ここにランダムなドキュメント自体から抽出されたすべてのメソッドがあります。

まず、三角分布の例:

print random.triangular(0, 1, 0.7)

random.triangular(low, high, mode)

これらの境界の間に指定されたモードで、ランダムNな浮動小数点数を返します。と境界はデフォルトでlow <= N < high01なります。引数は デフォルトで境界間の中間点になり、対称的な分布になります。lowhighmode

random.betavariate(alpha, beta)

ベータ分布。alpha > 0パラメータの 条件はとbeta > 0です。戻り値の範囲は0との間1です。

random.expovariate(lambd)

指数分布。lambd希望する平均で1.0 割った値です。ゼロ以外である必要があります。(パラメーターは「<em> lambda」と呼ばれますが、これはPythonでは予約語です。)戻り値の範囲は0、正の場合は正の無限大からの場合 は負の無限大です。lambd0lambd

random.gammavariate(alpha, beta)

ガンマ分布。(ガンマ関数ではありません!)パラメーターの条件はとalpha > 0ですbeta > 0

random.gauss(mu, sigma)

ガウス分布。muは平均であり、sigmaは標準偏差です。normalvariate()これは、以下に定義されている関数よりもわずかに高速です。

random.lognormvariate(mu, sigma)

正規分布を記録します。この分布の自然対数をとると、平均muと標準偏差の正規分布が得られますsigmamu任意の値をとることができ、ゼロsigmaより大きくなければなりません 。

random.normalvariate(mu, sigma)

正規分布。muは平均であり、sigmaは標準偏差です。

random.vonmisesvariate(mu, kappa)

muはとの間のラジアンで表される平均角度で0あり2*pi、は集中度パラメータであり、ゼロkappa 以上である必要があります。がゼロに等しい場合、この分布はからの範囲で均一なランダム角度に減少します。kappa02*pi

random.paretovariate(alpha)

パレート分布。alpha形状パラメータです。

random.weibullvariate(alpha, beta)

ワイブル分布。alphaはスケールパラメータでbetaあり、は形状パラメータです。

于 2009-01-25T23:24:57.367 に答える
5
import random
def flip(p):
    return (random.random() < p)

これは、必要な H または T (または任意の 2 つの値から選択) を選択するために使用できるブール値を返します。メソッドに選択肢を含めることもできます。

def flip(p):
    if random.random() < p:
        return 'H'
    else:
        return 'T'

しかし、それはあまり一般的ではありません。

于 2009-01-25T06:14:29.970 に答える
5

どうですか:

import numpy as np
n, p = 1, .33  # n = coins flipped, p = prob of success
s = np.random.binomial(n, p, 100)
于 2014-08-24T09:09:20.390 に答える
0
  • 0 ~ 1 の乱数をインポートします (randrange 関数を使用できます)

  • 数値が (1-p) を超える場合は、末尾を返します。

  • そうでなければ、頭を返す

于 2009-01-25T06:17:46.810 に答える