比特级均匀随机分布机制探究及Fortran random_number疑问
比特级视角下的均匀随机分布(以Fortran
random_number为例) 1. 是否能生成所有比特级的可能实数值?
不能。以IEEE 754单/双精度浮点数为例,[0,1)区间内的可表示数值是离散且总数有限的,但Fortran的random_number通常不会覆盖所有这些数值。绝大多数伪随机数生成器(PRNG)的逻辑是先生成固定长度的随机整数比特流,再通过“整数除以2^N”的方式映射到[0,1)区间。这种方式生成的数值只能是k/2^M(M为PRNG输出的有效比特数,比如双精度常用53位)的形式,而IEEE浮点数中存在大量无法用这类分数精确表示的数值,因此不会被生成。
2. 选中的比特级数值概率是否一致?
如果底层PRNG是均匀生成整数的,那么每个可生成的数值被选中的概率完全一致。比如PRNG生成N位均匀随机整数时,每个整数的出现概率是1/2^N,对应到[0,1)区间的k/2^N,每个数值的概率也都是1/2^N。需要注意的是,这种均等概率仅针对生成器能输出的数值集合,而非所有浮点数可表示的数值。
3. 生成数值间的间隔是否相同?
是的,这类生成器输出的数值间隔是固定的,等于1/2^M(M为PRNG输出的有效比特数)。这和你提到的“指数为0时的最大间隔”逻辑一致——因为映射方式是固定的整数除以2^M,相当于所有生成的数值都是该间隔的整数倍,不存在不同指数区间的间隔差异。
内容的提问来源于stack exchange,提问作者Stef1611
相关产品推荐
相关产品推荐

