我想找出比特和RNG之间的关系,对于int或float。
(随机我指的是均匀分布)
给我一个完美的布尔随机生成器,并要求我实现一个随机32位整数生成器(包括负、零和正)。我想要做的是为32位中的每一位生成一个随机布尔值,并将它们连接在一起成为一个随机int。
我做的对吗?
另外,如果给我一个完全随机的32位整数发生器,我可以说每一个位都可以被认为是均匀分布在0和1之上吗?
浮点数(不仅在0到1之间,还包括整个范围的浮点数)怎么样?
我能用同样的方式产生随机IEEE 745浮点数吗?
发布于 2014-04-08 14:13:01
是的,你确实做得对,用32幅不同的数字,会给你一个均匀分布的随机变量。
说明:每个数字可以通过32 0/1抽签的唯一组合生成。没有2个数字是从同一个组合中生成的,而没有一个数字是由2个组合产生的--这意味着,每个数字的概率是1/2^32 --就像预期的那样。
是的,同样的原则也适用于这里。选择32位数有2^32种“方式”,类似于前面的问题--您可以看到,这些数字在{0,1} /位上是独立均匀分布的。
randUnsignedInt()/(2^32-1)可以生成0,1范围内的随机均匀分布浮点。另一种方法是绘制一个int并重新解释它和浮点假设两者都使用相同的位数(基本上都是32位数,它们只在解释它们的方式上有所不同.)请注意,该选项不在0,1范围内。
发布于 2014-04-08 14:09:38
是。这正是random.org所做的。在这种情况下,域很容易映射--像六边模这样的东西更难。
https://stackoverflow.com/questions/22939125
复制相似问题