PHPでランダムな数字を作っていきたいと思います。これを応用すれば、くじ引き的な機能をつけることができます。8月1日記事
目次
rand(); rand(min,max)
と指定できます。minは0からmaxは32767まで指定できます。
mt_rand(); mt_rand(min,max)
と指定できます。minは0からmaxは2147483647まで指定できます。
<?php echo rand() . "<br>"; echo rand() . "<br>"; echo rand(1, 100)."<br>"; echo getrandmax()."がrandの最大値<br><br>";//最大値取得 echo mt_rand() . "<br>"; echo mt_rand() . "<br>"; echo mt_rand(1, 100)."<br>"; echo mt_getrandmax()."がmt_randの最大値<br><br><br>";//最大値取得 ?>
getrandmaxを使えば最大値を確認することができます。マニュアルみるとmt_rand()のほうが処理が4倍以上はやいそうです。
mt_randを使うといいと思います。PHPマニュアル
結果は以下のようになりました。
9170 27811 22 32767がrand関数の最大値 343663964 1805102422 84 2147483647がmt_rand関数の最大値
<?php //なにか作ってみる。20%の確率であたるクジ引き $point = mt_rand(1,100) . "<br>"; if($point % 5 == 0){//1から100までの乱数を作り、それを5で割ってあまりが0な場合はあたりにする。 echo "あたり"; }else{ echo "はずれ"; } ?>
<?php $point2 = mt_rand(1,100); echo $point2."<br>"; if($point2 < 30){ echo "雑魚キャラA"; }elseif($point2 < 50){ echo "雑魚キャラB"; }elseif($point2 < 70){ echo "雑魚キャラC"; }elseif($point2 < 80){ echo "レアキャラA"; }elseif($point2 < 90){ echo "レアキャラB"; }elseif($point2 < 95){ echo "超レアキャラA"; }elseif($point2 < 101){ echo "超レアキャラB"; } ?>
mt_rand関数を使って、最小値と最大値を設定すれば、意図する確率を生成することができると思います。
何も設定しないと0から2147483647となり5で割っても
純粋な5%
の数字にはならないと思います。
以上