「PHPでランダムな数字の生成」の編集履歴(バックアップ)一覧はこちら
「PHPでランダムな数字の生成」(2015/08/01 (土) 12:11:12) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
PHPでランダムな数字を作っていきたいと思います。これを応用すれば、くじ引き的な機能をつけることができます。8月6日記事
~
~
目次
#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%}の数字にはならないと思います。
~
~
以上
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%}の数字にはならないと思います。
~
~
以上