yon*_*ong 5 random floating-point haskell
我有一个输出值的随机数生成器(0, 1],但是我需要将输出提供给一个在0或1处返回无穷大的函数.如何在(0, 1)没有任何分支的情况下对生成的数字进行后处理,因为这是为了在GPU上执行?
我想一种方法是添加一个小常数然后取值mod 1.换句话说,生成from (?, 1 + ?],变成了[?, 1).有没有更好的办法?应该?是什么?
更新1
\n\n在 Haskell 中,您可以\xc9\x9b通过使用找到floatRange查找。下面的 C++ 部分否则适用。
笔记:下面的答案是在OP表示答案应该针对Haskell之前写的
\n\n您没有在问题中说明实现语言,因此我将在这里假设 C++。
\n\n看一眼 std::nextafter。
这将允许您获得下一个可能的值,您可以将其添加到上限,这将导致您的代码表现得好像它是包容性的。
\n\n至于分支,你可以重载该函数以避免分支。然而,这会导致代码重复。
\n\n我建议允许分支并让编译器进行此类微优化,除非您确实需要性能并且可以提供比标准实现更专业的实现(请参阅 Pascal Cuoq 的评论)。
\n| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |