我写得随机数函数,绝对比rand快!

function _rand($m,$n)
return time()%($n-$m)+$m;
@老虎会游泳 你有什么看法?如果time()的单位是微秒就更好啦
回复列表(17|隐藏机器人聊天)
  • @Ta / 2012-08-11 / /
    可否解释是什么意思?
  • @Ta / 2012-08-11 / /
    @五角圆星,用microtime(true)*1000
  • @Ta / 2012-08-11 / /
    @浪人 取区间[$m,$n]之间的随机数
  • @Ta / 2012-08-11 / /
    @老虎会游泳 应该是floor(microtime(true)*100000)
  • @Ta / 2012-08-11 / /
    楼主发帖辛苦了!
  • @Ta / 2012-08-11 / /
    @五角圆星,很遗憾。
    0.php慢两倍。
    果然“预先优化”是不靠谱的。
    测试代码如下:
    <?php
    function _rand($m,$n) {return time()%($n-$m)+$m;}
    echo 'rand ';
    $t=microtime(true);
    for($i=1000000;$i>0;$i--) rand(100,50000);
    echo microtime(true)-$t,'s
    ';
    echo '_rand ';
    $t=microtime(true);
    for($i=1000000;$i>0;$i--) _rand(100,50000);
    echo microtime(true)-$t,'s
    ';
    
  • @Ta / 2012-08-11 / /
    @老虎会游泳  杯具...预先优化是什么?不过这样取得随机数不是伪随机数 没有周期
  • @Ta / 2012-08-11 / /
    @五角圆星。在计算机中,真正的随机数是不存在的,因为计算机本身不能产生任何不确定的东西(否则机器就坏了)。
    任何由计算机产生的随机数都是伪随机数--它们都是由不随机的数(均匀变化的数)经过某种计算产生的。
    时间是均匀变化的。
    在未来的某一秒产生的“随机数”是可以提前预测的--它们是确定的,并非随机。
    我们之所以会觉得它们是随机的,是因为我们平时访问网页的时间是随机的,所以它们才变成了随机的。
    只要网络延迟稳定,通过程序控制,在特定的时间请求服务器,就可以得到确定的数。
  • @Ta / 2012-08-11 / /
    @老虎会游泳  数学书上说伪随机数是有周期的......
  • @Ta / 2012-08-11 / /
    @五角圆星,你的算法的周期性是$n-$m,因为2($n-$m)+$x除以($n-$m)的余数肯定与($n-$m)+$x的相等(就是$x),而且更绝的是,每个周期的函数图象都是连续的!(如果这一秒的随机数是4,下一秒一定是5!)这个算法甚至称不上伪随机!
  • @Ta / 2012-08-11 / /
    @老虎会游泳 ......好像是的耶
  • @Ta / 2012-08-11 / /
    @五角圆星
    00.php
    这是0到50的rand和你的算法的比较。rand显然更随机
    <?php
    echo 'rand
    ';
    for($i=0;$i<50;$i++) {
    srand($i); //用指定的数代替microtime()来产生随机数
    echo $i,' -> ',rand(50,10000),'
    ';
    }
    echo '_rand
    ';
    for($i=0;$i<50;$i++) {
    echo $i,' -> ',$i%(10000-50)+50,'
    ';
    }
  • @Ta / 2012-08-11 / /
    @老虎会游泳 汗.....类似自然数列了.....  对了 一般我用的是mt_rand 听说这个还随机些
  • @Ta / 2012-08-11 / /
    @五角圆星,你可以再访问一下0.php,mt_rand比rand慢了一点点。不过这么一点没有什么影响,毕竟谁也不可能取几十万次随机数。
    它们确实使用了不同的随机数生成算法,至于谁更随机,不清楚。
  • @Ta / 2012-08-12 / /
    0.php已经被其他代码取代了。
  • 000
    @Ta / 2013-06-23 / /
    如果是time() $_SERVER['REQUEST_TIME'] 还能再快一点
  • @Ta / 2014-02-14 / /
    长知识了,干粮呀!
添加新回复
回复需要登录