随机数的子串是随机数吗?
Is a substring of a random number a random number?
假设我有一大堆随机整数,它们在 000000
和 999999
之间均匀分布。
现在假设我取了每个数字的前 3 位数字。
这些数字是否保证在 000
和 999
之间均匀分布?
如果我取最后三位数怎么办?
如果随机整数是十六进制或任何其他基数(但仍然是每个数字一个字符)怎么办?
实际应用:在给定输入(即数据被散列)?
选择前三位或后三位数字将为您提供一个随机且均匀分布的三位数字。实际上,您可以同时选择两者并获得两个随机且独立的数字,每个数字都具有均匀分布,只要您为每个数字选择的数字不重叠即可。
(所以你可以选择数字 1、3 和 4 作为第一个数字,6、2 和 5 作为最后一个数字,它们在 000
-999
范围。)
这是因为我们可以认为您的 000000
-999999
生成器由 6 个具有均匀概率分布的独立 1 位生成器组成。
这仍然适用于十六进制的 000000
-FFFFFF
,但显然不适用于 000000
-0F423F
(999999)。
只要您坚持使用十六进制、二进制、十进制等位置系统并允许完整的字符跨度,这就可行。
编辑:
我不确定我是否理解你的哈希生成范围。
假设我有一大堆随机整数,它们在 000000
和 999999
之间均匀分布。
现在假设我取了每个数字的前 3 位数字。
这些数字是否保证在 000
和 999
之间均匀分布?
如果我取最后三位数怎么办?
如果随机整数是十六进制或任何其他基数(但仍然是每个数字一个字符)怎么办?
实际应用:在给定输入(即数据被散列)?
选择前三位或后三位数字将为您提供一个随机且均匀分布的三位数字。实际上,您可以同时选择两者并获得两个随机且独立的数字,每个数字都具有均匀分布,只要您为每个数字选择的数字不重叠即可。
(所以你可以选择数字 1、3 和 4 作为第一个数字,6、2 和 5 作为最后一个数字,它们在 000
-999
范围。)
这是因为我们可以认为您的 000000
-999999
生成器由 6 个具有均匀概率分布的独立 1 位生成器组成。
这仍然适用于十六进制的 000000
-FFFFFF
,但显然不适用于 000000
-0F423F
(999999)。
只要您坚持使用十六进制、二进制、十进制等位置系统并允许完整的字符跨度,这就可行。
编辑: 我不确定我是否理解你的哈希生成范围。