C或Python中的双峰分布

时间:2009-03-16 17:42:33

标签: python c random

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

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

2 个答案:

答案 0 :(得分:4)

你不是只选择两种模态分布中的值吗?

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 )

这可能会做你需要的一切。

答案 1 :(得分:2)

始终是老式的直截了当accept-reject algorithm。如果它对Johnny von Neumann来说足够好,它对你来说应该足够好了; - )。