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%
の数字にはならないと思います。
以上