gpt4 book ai didi

algorithm - 流水线化 Ziggurat 随机数生成器

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:58 24 4
gpt4 key购买 nike

我目前正在实现 George Marsaglia 的 Ziggurat 随机数生成器的一个版本。虽然它被认为是生成高质量正态分布随机数生成器的最快方法之一,但它充满了循环控制代码(即循环中间的 return 语句、if 语句、分支等)并且它使得多次调用标准 C 函数,如 exp() 和 log()。更不用说无限循环了。

这使得编译器无法对代码进行流水线处理。最终,我觉得像直接使用中心极限定理这样的基本方法最终可能会更快,因为它可以很容易地流水线化。不幸的是,它不适合高斯分布的尾部,因此它不适合我的应用程序。

这里有人对如何减少控制代码和函数调用有任何想法吗?我目前正在使用 Colin Green's implementation of the algorithm我移植到 C。我的底层统一生成器是 Tiny Mersenne Twister(所以请不要告诉我使用 MT,因为我已经看到其他人这样做了,我已经在那里了。这个讨论是针对正态分布的 RNG ,不是统一的 RNG)。

最佳答案

你可以看看我的 C 实现 here .主函数只有 20 多行代码,所以应该很容易展开循环。它还允许您选择使用整数或浮点比较,以您机器上更快的为准。您可以插入任何后端 RNG。

关于algorithm - 流水线化 Ziggurat 随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17844722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com