PHP随机相关
1、字符串
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
我要取$str的随机5个字符组成新的字符串,是用str_shuffle还是用rand(0, strlen($str))?
这个比较明显,应该是str_shuffle
2、数组
$color = array
(
imageColorAllocate($im, r, g, b),
imageColorAllocate($im, r, g, b),
imageColorAllocate($im, r, g, b),
.....
imageColorAllocate($im, r, g, b)
);
这里我想随机取数组$color里的一个元素,是用:
$len = sizeof($color)-1 ;
$color[rand(0, $len)];
还是用
array_rand($color, 1);
经测试,上述数组的两种方法差别不大。有个现象比较怪异,就是循环20次时,$color[rand()]更快;循环200次时,array_rand更快。
种子有问题?在使用array_rand随机取函数元素时,取了200次,竟然没一次是最后一维。难不成array_rand的种子把最后一维给干掉了?而使用$color[rand()]时,各个元素概率比较均等。
这又面临选择了,我可能会选择$color[rand()]。最后提醒一下:
如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
我要取$str的随机5个字符组成新的字符串,是用str_shuffle还是用rand(0, strlen($str))?
这个比较明显,应该是str_shuffle
2、数组
$color = array
(
imageColorAllocate($im, r, g, b),
imageColorAllocate($im, r, g, b),
imageColorAllocate($im, r, g, b),
.....
imageColorAllocate($im, r, g, b)
);
这里我想随机取数组$color里的一个元素,是用:
$len = sizeof($color)-1 ;
$color[rand(0, $len)];
还是用
array_rand($color, 1);
经测试,上述数组的两种方法差别不大。有个现象比较怪异,就是循环20次时,$color[rand()]更快;循环200次时,array_rand更快。
种子有问题?在使用array_rand随机取函数元素时,取了200次,竟然没一次是最后一维。难不成array_rand的种子把最后一维给干掉了?而使用$color[rand()]时,各个元素概率比较均等。
这又面临选择了,我可能会选择$color[rand()]。最后提醒一下:
如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。

