假设我有大量随机整数,并且在000000
和999999
之间(包括两端)具有均匀分布。
现在假设我使用每个数字的前3位。
这些数字是否保证在000
和999
之间(包括两端)均匀分布吗?
如果我输入最后三位数怎么办?
如果随机整数以十六进制或其他任何基数(但每个位数仍为一个字符)怎么办?
实际应用:是否可以使用密码散列(根据定义,其最小值和最大值之间应具有均匀的分布)可用于生成给定输入(即,被散列的数据)的随机但一致的任意范围)?
答案 0 :(得分:1)
选择前三位或后三位将为您提供一个随机且分布均匀的三位数字。确实,您可以同时选择两者,并获得两个随机且独立的数字,每个数字均具有均匀分布,只要为每个数字选择的数字不重叠即可。
(因此您可以选择数字1、3和4作为第一个数字,并选择6、2和5作为最后一个数字,它们在000
-{{1}中仍然是随机且独立的}范围。)
这是因为我们可以认为您的999
-000000
生成器由6个独立的1位数字生成器组成,它们具有均匀的概率分布。
这仍然适用于999999
-000000
(十六进制),但显然不适用于FFFFFF
-000000
(999999)。
只要您坚持使用十六进制,二进制,十进制等位置系统,并允许所有可能的字符范围,
编辑: 我不确定我是否理解您使用哈希生成的范围。