【发布时间】:2015-08-05 14:32:03
【问题描述】:
除了my question here,我将使用 random_compat polyfill(它使用/dev/urandom)来生成 1 到 10,000,000 范围内的随机数。
我确实意识到,对于我的项目编码方式,所有事情都是正确的,上述工具应该会产生良好的(如随机/安全等)数据。但是,我想在混合中添加额外的随机源 - 以防万一 6 个月后我读到有适用于我的特定操作系统版本的补丁来修复 /dev/urandom 中的主要错误(或任何其他问题) .
所以,我想我可以从 random.org 和 fourmilab.ch/hotbits
获得数字另一种来源是来自我操作的网站的一些日志 - 如果我忽略日期/时间部分并只使用微秒,则计时到微秒 - 这实际上是由人类决定点击关联。我知道这可能被归类为随意而不是随机,但它对我有用吗?
编辑重新时间戳日志 - 将使用 PHP microtime() 创建一个日志,如下所示:
0.**832742**00 1438282477
0.**57241**000 1438282483
0.**437752**00 1438282538
0.**622097**00 1438282572
我将只使用粗体部分。
假设我采用两个额外随机数源 A 和 B,以及 /dev/urandom 的输出,将其称为 U 并设置范围如下:
A 和 B 为 1 - 500,000
U 是 1 - 9,000,000
最终随机数为A+B+U
我将需要数百万个介于 1 到 10,000,000 之间的最终数字
但是 A 和 B 数字池将只包含几千个,但我认为通过使用素数数量我可以将其扩展到数百万个 A&B这样的组合
// this pool will be integers from two sources and contain a larger prime number
// of members instead of the 7 & 11 here - this sequence repeats at 77
$numbers = array("One","Two","Three","Four","Five","Six","Seven");
$colors = array("Silver","Gray","Black","Red","Maroon","Yellow","Olive","Lime","Green","Aqua","Orange");
$ni=0;
$ci=0;
for ($i=0;$i<$num_numbers_required;$i++)
{
$offset = $numbers[$ni] + $colors[$ci];
if ($ni==6) // reset at prime num 7
$ni=0;
else
$ni++;
if ($ci==10) // reset at prime num 11
$ci=0;
else
$ci++;
}
这个计划是否有意义 - 是否有可能通过执行所有这些操作来降低我的最终结果的安全性?我对使用时间戳数据有何想法?
提前致谢。
【问题讨论】:
-
[1,500000] + [1,500000] + [1, 9000000] 的最小值不是 1,而是 3。
-
是的,正确!我只是用这些整数来说明我的想法。