我有一个随机数生成器,它输出(0, 1]
的值,但我需要将输出提供给一个返回0或1无穷大的函数。如何将生成的数字后处理到{ {1}}没有任何分支,因为这是为了在GPU上执行?
我想一种方法是添加一个小常量,然后取值(0, 1)
。换句话说,从mod 1
生成,转换为(ɛ, 1 + ɛ]
。有没有更好的办法? [ɛ, 1)
应该是什么?
答案 0 :(得分:2)
更新1
在Haskell中,您可以使用floatRange
找到ɛ
。下面的C ++部分也适用。
注意:以下答案是在OP之前写的,表示答案应该是Haskell
你没有在问题中陈述实现语言,所以我将在这里假设C ++。
这将允许您获取下一个可以添加到上限的可能值,这将导致您的代码就像包含它一样。
对于分支,可以重载函数以避免分支。但是,这会导致代码重复。
我建议允许分支并让编译器进行这样的微优化,除非你真的需要性能并且可以提供比标准实现(see Pascal Cuoq's comment)更专业的实现。