Maison > Article > développement back-end > !怎么更快速的生成一个随机数
求助!如何更快速的生成一个随机数!
需求是这样的:
会员购物,会生成一个定单号,这个定单号必须是数字,而且是在一定的范围之内的数据,如 1 到 10万。
我现在用的方法是 用 rand(1,100000),生成一个随机数,得到这个随机数后,再去数据库里查,如果已经存在这个数了,就循环再查。
代码如下:
<br /> set_time_limit(0);<br /> $test = M('test');<br /> $_run = true;<br /> $_order_id = rand(0, 100000);<br /> while ($_run) {<br /> $orderInfo = $test->where("val = ".$_order_id)->find();<br /> if(empty($orderInfo)){<br /> $_run = false;<br /> return $_order_id;<br /> }else{<br /> $_order_id = rand(0, 100000);<br /> }<br /> }<br />
$m = 100000;<br />$c = 101;<br />$b = 81;<br />$n = 0;<br />for($i=0; $i<100000; $i++) {<br /> $n = ($n * $c + $b) % $m;<br /> $r[] = $n;<br />}<br />print_r(array_count_values(array_count_values($r)));<br />
Array<br />(<br /> [1] => 100000<br />)<br />可知 $r 中保有 0 - 99999 随机排列的数字,且每个数字只会出现一次