程序输出结果老是有连续重复 php 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想,你应该补习一下相关的数学知识了!内层 28外层 10000总计 2800006个数字的集合从 000000 到 999999所以只有顺序从该集合中抽取 280000 个元素,才不可能出现重复(当然集合中元素的位置是可以打乱的) php 的伪随机数发生器的周期是 32768也就是说 32768 次之后必然出现重复等何况你需求的总量比伪随机数周期的高出一个数量级,这必然会出现重复的所以你需要自己写一个伪随机数发生器来突破这个周期限制比如define('RAND_MAX', pow(2, 27));function my_rand() { static $r = 0; if($r == 0) $r = time();//以当前时间做种子 $r = ($r * 123 + 59) % RAND_MAX; if($r < 0) $r += RAND_MAX; return $r;}测试for($i=0; $i<1000000; $i++) { $c = my_rand(); @$t[$c]++;//对每个数出现的次数进行计数,多于 1 就是重复了}print_r(array_count_values($t));//统计数组中出现的相同值的次数结果Array( [1] => 1000000)表示没有出现重复pow(2, 27) 等于 134217728表示相同的种子在 134217728 次中不会出现重复 mysql 乱码的问题 请大家都说说自己是如何防止sql注入的? 难道200分都没人要? 晕啦,怎么都不对,用过smarty的朋友帮忙看看 大家好 , 请教一个问题 : 在 PHP 中 , 如何不用端口连接本地 PostgreSQL7.3 ? php4.23下写的画图程序(gd 1.6.2)是不是不能在php4.34(gd 2.0)下使用呀? php中Session销毁的时候是否可以触发一个事件 有关ipb的具体介绍和配置,修改方法 请问PHP如何设置SESSION的超时? 动态网站属于下面哪一种软件开发形式? 各位大神,求助下载文件之后跳转的问题~ 这种数组该如何输出
外层 10000
总计 280000
6个数字的集合从 000000 到 999999
所以只有顺序从该集合中抽取 280000 个元素,才不可能出现重复(当然集合中元素的位置是可以打乱的) php 的伪随机数发生器的周期是 32768
也就是说 32768 次之后必然出现重复
等何况你需求的总量比伪随机数周期的高出一个数量级,这必然会出现重复的所以你需要自己写一个伪随机数发生器来突破这个周期限制
比如define('RAND_MAX', pow(2, 27));
function my_rand() {
static $r = 0;
if($r == 0) $r = time();//以当前时间做种子
$r = ($r * 123 + 59) % RAND_MAX;
if($r < 0) $r += RAND_MAX;
return $r;
}
测试for($i=0; $i<1000000; $i++) {
$c = my_rand();
@$t[$c]++;//对每个数出现的次数进行计数,多于 1 就是重复了
}
print_r(array_count_values($t));//统计数组中出现的相同值的次数结果
Array
(
[1] => 1000000
)
表示没有出现重复pow(2, 27) 等于 134217728
表示相同的种子在 134217728 次中不会出现重复