gpt4 book ai didi

c++ - 在每次调用 : should I pass the engine, 分配或两者时生成不同数字的函数?

转载 作者:行者123 更新时间:2023-11-28 02:54:50 24 4
gpt4 key购买 nike

我很难准确理解分布对于给定随机引擎的作用。假设我想写一个函数 f(/* Arguments */)在每次调用时使用 std::mt19937 返回一个新的随机数引擎和一个std::uniform_int_distribution<int> .我希望这个函数是线程安全的。我的问题如下:我应该通过引用传递给这个函数、引擎、分布还是两者?

最佳答案

分布可以缓存一些状态,从而减少调用引擎获取熵的频率。例如,Box-Muller transform将均匀分布的两个样本映射到正态分布的两个样本。可以实现 std::normal_distribution通过 Box-Muller,以便它在每次调用分发时对引擎进行两次调用。

理想情况下,您应该为每个线程存储一个引擎和分布——或更细粒度,但肯定不会更少——并传递一个 lambda 或 std::function<int()>到你的功能f将其与如何获得随机数的细节隔离开来。

关于c++ - 在每次调用 : should I pass the engine, 分配或两者时生成不同数字的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22252209/

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