问题描述
result2.txt 中的结果每 ~100 个字符串重复一次.是的,相同的姓氏和相同的 rand(100000, 999999) 结果每 100 个值循环一次
NetBeans 8.0.2
//获取姓氏$famtxt = file('姓氏.txt');$surname = $famtxt[array_rand($famtxt)];未设置($famtxt);//结果$result0=$姓氏.''.rand(100000, 999999);$resulttxt = fopen('result2.txt', 'a');fwrite($resulttxt,$result0);
永远不要使用 rand
,那里有更好的功能,即
http://php.net/manual/en/function.random-int.php
生成适合使用的加密随机整数公正的结果至关重要(例如洗牌扑克牌).
或
http://php.net/manual/en/function.mt-rand.php
许多旧 libcs 的随机数生成器存在可疑或未知特点和速度慢.默认情况下,PHP 使用 libc random带有 rand() 函数的数字生成器.mt_rand() 函数是一个为此直接替换.它使用随机数生成器使用 » Mersenne Twister 的已知特征,它将生成随机数的速度是平均 libc 的四倍rand() 提供.
(我加了重点)速度是一个不错的奖励,但事实上它使用 MT
会给你随机"的数字,而不仅仅是 rand
.>
Results in result2.txt repeats every ~100 string.Yes, same surnames and same rand(100000, 999999) results are cycling every 100 values
NetBeans 8.0.2
//Get surname
$famtxt = file('surname.txt');
$surname = $famtxt[ array_rand($famtxt) ];
unset($famtxt);
//Results
$result0=$surname.' '.rand(100000, 999999);
$resulttxt = fopen('result2.txt', 'a');
fwrite($resulttxt,$result0);
Never use rand
, there are better functions out there, namely
http://php.net/manual/en/function.random-int.php
or
http://php.net/manual/en/function.mt-rand.php
(Emphasis added by me) The speed is a nice bonus, but the fact that its using MT
will give you "randomer" numbers than just rand
.
这篇关于PHP: rand() 或 array_rand 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!