PHPでランダムな数字を作っていきたいと思います。これを応用すれば、くじ引き的な機能をつけることができます。8月1日記事

目次



二つのランダムな数字を作る関数

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マニュアル

結果は以下のようになりました。

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で割っても 純粋な5% の数字にはならないと思います。

以上

最終更新:2015年08月01日 12:11