请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 955|回复: 6

[php] 产生2000不同随机数并输入MYSQL [复制链接]

wanghwei1 楼主

王者风

金牌会员

帖子
106
体力
3417
威望
0
发表于 2008-9-2 10:51:18 |显示全部楼层
如题:望高手指点,感激不尽!
专业网站建设
西部数码顶级域名注册商39元抢注!

罗亮

超级版主 手机认证 

帖子
15893
体力
19484
威望
19
居住地
北京市 海淀区
发表于 2008-9-2 11:15:07 |显示全部楼层
mt_rand()函数

如果说要不重复的随机数那么次插入数据库时都要检验一下..
效率就...
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

意颇C龙

银牌会员

帖子
501
体力
1436
威望
0
居住地
天津市 南开区
发表于 2008-9-2 11:22:26 |显示全部楼层
初学php写了一个,通过楼上才知道
mt_rand()它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍
============================================================
思路是一样的 ,用do while 弄得,生成2000个用不了多长时间10秒以里
<?php
//连接数据库略去
$i=1;
do {
        $tmprnd=mt_rand(1000, 9999);
        $sql="select count(*) as total from test where num='".$tmprnd."'";
        $result=mysql_query($sql,$conn);
        $ret=mysql_fetch_array($result);
        $count=$ret['total'];
        if($count==0){
                mysql_query("insert into test (num) values ('".$tmprnd."')",$conn);
                $i++;
        }
        }
while($i<2000)
?>
==============================================================
考虑到效率问题,可以先生成2000个不重复随机数,放到数组里,每次检测生成的在不在数组里,直到生成2000个
然后统一把2000条插入数据库。

[ 本帖最后由 EpsiLonLink 于 2008-9-2 11:35 编辑 ]

使用道具 举报

wanghwei1 楼主

王者风

金牌会员

帖子
106
体力
3417
威望
0
发表于 2008-9-2 11:50:32 |显示全部楼层

谢谢高手指点

这里果真的高手如云呀,热心肠人更多,哈哈.小弟要常来这里了.
专业网站建设

使用道具 举报

vion77 
帖子
223
体力
589
威望
0
发表于 2008-9-3 20:34:56 |显示全部楼层
3楼这种写法会加重数据库的负担
先取出2000个不同的随机数
再插入数据库,这样开销就很大了

使用道具 举报

vion77 
帖子
223
体力
589
威望
0
发表于 2008-9-3 21:23:58 |显示全部楼层
看LZ要什么要求了
方法1
$numbers = range(1,1000);
shuffle($numbers);
foreach ($numbers as $number) {
    echo "$number ";
}
可以取前面的2000个,他是随机的1000内数字
方法2
$array = array();
for($i=0;$i<20;$i++){
  $value = mt_rand(1,20);
  if(array_search($value,$array)===false){
    $array[] = $value;
  }else{
   $i--;
  }
}
print_r($array);

使用道具 举报

阿克 
帖子
605
体力
1988
威望
2
发表于 2008-9-4 15:39:12 |显示全部楼层
我觉得操作数组比操作数据库快

所以可以先把随机数弄成数组,再批量插入
单车、慢跑、轮滑、攀岩、徒步

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:34 , Processed in 0.080146 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部