加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 为什么rand()不是真的随机?

发布时间:2020-05-25 09:27:30 所属栏目:PHP 来源:互联网
导读:我想在图像上放置随机点(空间中的星星用于一些有趣的侧面项目) 我有这个简单的脚本. ?php$gd = imagecreatetruecolor(1000, 1000);$white = imagecolorallocate($gd, 255, 255, 255);for ($i = 0; $i 100000; $i++) { $x = rand(1,1000);

我想在图像上放置随机点(空间中的星星用于一些有趣的侧面项目)

我有这个简单的脚本.

<?php
$gd = imagecreatetruecolor(1000,1000);
$white = imagecolorallocate($gd,255,255);

for ($i = 0; $i < 100000; $i++) 
{
    $x = rand(1,1000);
    $y = rand(1,1000);

    imagesetpixel($gd,round($x),round($y),$white);
}

header('Content-Type: image/png');
imagepng($gd);
?>

请记住,这只是用于测试,这就是为什么我将100000置于for循环中,因此它显示了我注意到的模式.我们有100万像素使用,仍然随机X和Y创建此模式:

所以它远非随机.我知道rand不是真正随机的,这就是为什么它对密码学不好.但我找不到有关它如何工作的信息,我应该怎么做以避免这样的模式.

线性同余随机数生成器(这是PHP兰德使用的)将始终在x-y图上显示自相关效应.

使用mt_rand可以获得更好的结果.这是Mersenne Twister发电机.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读