algorithm - 位与int/float随机数生成器的关系

标签 algorithm random floating-point integer bit

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

(随机我的意思是均匀分布)


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

我做的对吗?


同样从另一个角度来看,如果给我一个完美随机 32 位整数生成器,我可以说每个位都可以被认为是均匀分布在 0 和 1 上吗?


float怎么样(不仅是0到1之间,而是float的全范围)?

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

最佳答案

是的,你确实做对了,使用 32 次不同号码的抽奖,会给你一个均匀分布的随机变量。

说明:每个号码都可以通过 32 0/1 开奖的独特组合生成。同一个组合不会生成 2 个数字,2 个组合也不会生成任何数字 - 也就是说,每个数字的概率为 1/2^32 - 正如预期的那样。


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


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

关于algorithm - 位与int/float随机数生成器的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939125/

相关文章:

algorithm - 是否有 "Detecting NearDuplicates for Web Crawling"中描述的想法的实现

algorithm - While 循环中包含收缩列表的算法的大 O 表示法

java - 为一项任务预初始化数据的设计模式

python - 如何使用 NumPy 向信号添加随机噪声?

单精度 IEEE 754 float 的格式

math - float 学有问题吗?

algorithm - 如何有效地将整数转换为斐波那契编码?

python - 创建 100 个随机整数的列表,返回最大值

data.table 中跨组(不在组内)随机排序

assembly - AT&T 语法汇编浮点运算引用