我正在寻找一种简单的算法,如何仅使用 ANSI rand() 函数但具有任意概率分布来生成伪随机浮点数。对于简单的均匀分布,我使用以下代码:
x = (float)rand() / (float)RAND_MAX;
当然它不是很准确,但足以满足我的需求。我还需要其他分布,如逻辑和高斯分布。理想情况下,我必须使用有限长度的简单向量定义任意 pdf,例如,对于逻辑 pdf,此向量可能如下所示:
logistic_pdf = {0., 0.26894, 0.33924, 0.41742, 0.5, 0.58257, 0.66075, 1.};
对于统一(使用相同的维度 8):
uniform_pdf = {0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125};
这只是一个想法。但我不确定如何rand()->{0...RAND_MAX}
仅使用有效地实现它。