ヘルプ!乱数をより速く生成する方法!
要件は次のとおりです。
会員が購入すると、注文番号が生成されます。この注文番号は、1 ~ 100,000 などの一定の範囲内のデータである必要があります。
私が現在使用している方法は、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 />