如何从随机布尔值生成器生成均匀的随机整数生成器?

问题描述 投票:1回答:1

我有一个基于硬件的布尔生成器,可以统一生成1或0。如何使用它制作统一的8位整数生成器?我目前正在使用收集的布尔值为8位整数创建二进制字符串。生成的整数不是均匀分布的。遵循this page中说明的分布。具有很多交替位的整数(例如85(01010101)和-86(10101010))具有最高的生成机会,而具有很多重复位的整数(例如0(00000000)和-1(11111111))具有最低的机会。那么正确的方法是什么?

random probability probability-theory
1个回答
0
投票

您建议的方法是将布尔生成器的八位组合为一个统一的整数,从理论上讲是可行的。但是,实际上有几个问题:

  • 您没有提到它是哪种硬件。在大多数情况下,除非硬件是为此目的而设计的所谓的true random number generator,否则硬件将不太可能生成统一的随机布尔位。例如,硬件可能会生成均匀分布的位,但是具有周期性行为。
  • 表示与理想的随机值相比,预测生成器生成的值有多困难。例如,具有32位熵的64位数据块与理想的随机32位数据块一样难以预测。表征硬件设备的熵(或产生不可预测值的能力)绝非易事。除其他事项外,这涉及熵测试,必须在适合硬件的整个工作条件范围内(例如,温度,电压)进行熵测试。
  • 大多数硬件无法产生统一的随机值,因此通常需要执行一个附加步骤,称为随机抽取熵抽取无偏白化偏斜校正,将硬件生成的值转换为均匀分布的随机数。但是,如果首先表征硬件的熵,它们将发挥最佳作用(请参阅上一点)。
  • 最后,您仍然必须测试整个过程是否提供了出于您的目的“足够随机”的数字。有几种统计测试试图这样做,例如NIST的统计测试套件或TestU01。

有关更多信息,请参见“ Nondeterministic Sources and Seed Generation”。

© www.soinside.com 2019 - 2024. All rights reserved.