+ -
当前位置:首页 → 问答吧 → 关于产生随机数的一点有趣的发现

关于产生随机数的一点有趣的发现

时间:2010-08-12

来源:互联网

           敝人是出学PHP,不足之处甚广,还请各位多指教了。今天练习写生成一组4位随机数的代码,写了两个,在写的时候发现了有趣的问题。
           生成随机数的方法很多,老鸟们不用在这里鄙视我的方法啊


第一种是:
$arr=range(0,9);
shuffle($arr);
$arr=array_slice($arr,0,4);

print_r $arr;
第二种:
$arr=range(0,9);
shuffle($arr);
$arr=array_rand($arr,4);
print_r $arr;


发现第二种方法随机出来的数$arr[0]的值总是在0~5之间,[1]则是在1~6,[2]则是2~8之间,[3]则是5~9,而且多数情况是8和9.每个下标产生的随机数0~9不均等。
第一种只是打乱了一次数组的值,然后截取了前4个,每个下标每次产生的随机数0~9几率都是均等的。而第二次不仅打乱了数组的值,并且取的4个也是随机取的但还是不均等。只有把shuffle($arr)这句放到array_rand($arr,4)下面才和第一种方法一样。

                             呵呵。

作者: gisiyang   发布时间: 2010-08-12

呵呵,这个确实很有趣啊。

作者: wanchun0222   发布时间: 2010-08-12