C 或 Python 中的双峰分布

Can*_*der 2 c python random

根据 C 或 Python 中的双峰分布生成随机值的最简单方法是什么?

我可以实现像 Ziggurat 算法或 Box-Muller 变换之类的东西,但是如果有现成的库,或者我不知道的更简单的算法,那就更好了。

S.L*_*ott 5

您不只是选择两个模态分布中的任何一个值吗?

http://docs.python.org/library/random.html#random.triangular

听起来您只是在两组参数之间来回切换以调用三角形。

def bimodal( low1, high1, mode1, low2, high2, mode2 ):
    toss = random.choice( (1, 2) )
    if toss == 1:
        return random.triangular( low1, high1, mode1 ) 
    else:
        return random.triangular( low2, high2, mode2 )
Run Code Online (Sandbox Code Playgroud)

这可以做你需要的一切。