本文介绍了PHP: rand() 或 array_rand 问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 16:21