C或Python中的双峰分布

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

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

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

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 ) 

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

始终存在老式的直接接受拒绝算法 。 如果它对Johnny von Neumann来说足够好,它应该对你来说足够好;-)。