「PHPでランダムな数字の生成」の編集履歴(バックアップ)一覧に戻る

PHPでランダムな数字の生成 - (2015/08/01 (土) 12:11:12) のソース

PHPでランダムな数字を作っていきたいと思います。これを応用すれば、くじ引き的な機能をつけることができます。8月1日記事
~
~
目次
#contents
~
~
*二つのランダムな数字を作る関数
**rand関数
 rand();
 rand(min,max)
と指定できます。minは0からmaxは32767まで指定できます。
~
~
**mt_rand関数
 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マニュアル:http://php.net/manual/ja/function.mt-rand.php]]
~
~
結果は以下のようになりました。
 9170
 27811
 22
 32767がrand関数の最大値
 
 343663964
 1805102422
 84
 2147483647がmt_rand関数の最大値
~
~
*何か作ってみる1。20%であたりになるくじ引き
 <?php
 //なにか作ってみる。20%の確率であたるクジ引き
 $point = mt_rand(1,100) . "<br>";
 if($point % 5 == 0){//1から100までの乱数を作り、それを5で割ってあまりが0な場合はあたりにする。
 		echo "あたり";
 	}else{
 		echo "はずれ";
 }
  
 ?>
~
~
*何か作ってみる2。ガチャシステム
 <?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で割っても&color(red){純粋な5%}の数字にはならないと思います。
~
~
以上