【问题标题】:generate uniformly distributed random number between 0 and 1 based on unsigned int根据 unsigned int 生成 0 到 1 之间的均匀分布随机数
【发布时间】:2012-09-25 16:02:21
【问题描述】:

我可以使用由统一随机数生成器例程生成的 32 位无符号整数。我想将此数字转换为 [0,1] 范围内的浮点数。 显然,这很容易通过将 unsigned int 除以 UINT_MAX 来完成,在除法之前将两者都转换为浮点数。除非我弄错了,否则我认为这样的划分会花费我很多精度,因此并不理想。

由于此操作将在 openCL 中执行,因此我假设没有可以在中间使用的双变量。

有什么想法可以更好地生成浮点数吗?

提前致谢!

汤姆

【问题讨论】:

    标签: random


    【解决方案1】:

    我不这么认为。

    无论如何,您只能使用 32 位精度,因此转换为(大概是 32 位)浮点数并返回应该没问题。

    您将遇到 32 位量化“错误”,但这是基于原始 32 位数据类型,而不是浮点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2013-12-09
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      相关资源
      最近更新 更多