位和int / float随机数生成器之间的关系

时间:2014-04-08 13:50:49

标签: algorithm random floating-point integer bit

我想弄清楚int或float的位和RNG之间的关系。

(通过随机我的意思是统一分布)


我得到了一个完美的布尔随机生成器,我被要求实现一个随机的32位整数生成器(包括负,零和正)。我想要做的是为32位中的每一位生成一个随机布尔值,并将它们连接在一起成为随机int

我做对了吗?


另外,如果给出一个完美随机32位整数生成器,我可以说每个位可以被认为是在0和1上均匀分布吗?


如何浮动(不仅在0和1之间,而是整个范围的浮动)?

我可以使用相同的方式生成随机IEEE 745浮点数吗?

2 个答案:

答案 0 :(得分:1)

是的,你确实做得对,使用32个不同数字的抽奖,会给你一个统一的分布式随机变量。

说明:每个数字可以通过32 0/1绘制的唯一组合生成。从同一组合中生成2个数字,并且不会从2个组合生成数字 - 这意味着每个数字的概率为1/2 ^ 32 - 正如预期的那样。


是的,同样的原则适用于此。有2 ^ 32'方式'选择32位数字,与上一个问题类似 - 您可以看到数字在每位{0,1}上独立均匀分布。


randUnsignedInt()/(2^32-1)可以生成范围[0,1]中随机均匀分布的浮点数。另一种方法是绘制一个int并重新解释它为广告浮点数 - 假设两者都使用相同的位数(基本上 - 两者都是32位数,它们只在你解释它们的方式上有所不同......)请注意,替代方案不在[0,1]范围内。

答案 1 :(得分:0)

是。这正是random.org的作用。在这种情况下,域很容易映射 - 像6 sided die这样的东西更难。