■背景
PHP独学、初心者です。
■ここでの目標
① 以下の式(出目の集計結果)をもとに(出目の集計結果が合っていることを確認する意味も含めて)集計結果とは別に、出目を表示したい
② ①を関数化したい
$face=$_POST['face']; //サイコロの面の数 $num=$_POST['num']; //サイコロをふる回数 $roll=array_fill(1,$face,0); for($i=1;$i<=$num;$i++){ $dice=mt_rand(1,$face); $total=$roll[$dice]++; } foreach($roll as $key=>$val){ echo "{$key}:{$val}<br>\n"; }
■最終目標
元の式をベース(or配列をベースにした考えの式)に、⑴出目の表示⑵集計結果、それぞれを関数化したい
■試したこと
出目表示のみをさせることはできたが、元の式からの集計結果と連動できない
/** *サイコロのふる回数と面数に応じて、サイコロをふった結果を取得 *@param int $rollnum サイコロふる回数 *@param int $facenum サイコロの面数 *@return string $dicenum 結果の数字を文字列とし返す */ function dice2($rollnum,$facenum){ $dice=""; for($i=1;$i<=$rollnum;$i++){ $dicenum.=mt_rand(1,$facenum); } return $dicenum; }
表示はできたが、元の式の
$dicenum=mt_rand()%($facenum)+1; $total=$a[$dicenum]++;
が含まれていないため、集計結果との連携ができていない
関数化の作業にまだ不慣れで苦戦しています。
アドバイスいただけますと幸いです。
--追記--
回答ありがとうございます。
当方の知識不足(いただいた回答にでてくる公式を調べながら解読しようと試みるも全ては理解できていない)と質問の仕方が原因で、おそらく求めているものと少しずれている気がします。
もう一度質問の形をかえて質問させてください。
■目標
以下、ふたつの関数を連携させたい。
関数は独立したものに保ちたいが、結果を連携させたい。
それぞれの動作は確認済み、だが、完全に独立している
サイコロの出目を表示
*サイコロのふる回数と面数に応じて、サイコロを出目を表示 *@param int $facenum サイコロの面数 *@param int $rollnum サイコロふる回数 *@return string print 結果の数字を返す */ $face=$_POST['face']; //サイコロの面の数 $num=$_POST['num']; //サイコロをふる回数 function diceRoll($rollnum,$facenum){ for($i=1;$i<=$rollnum;$i++){ $dice=mt_rand(1,$facenum); print $dice; } }
サイコロの集計結果
*サイコロのふる回数と面数に応じて、サイコロをふった集計結果を表示 *@param int $facenum サイコロの面数 *@param int $rollnum サイコロふる回数 *@return string print 結果の数字を帰す */ function diceCount($rollnum,$facenum){ $arrayDice=array_fill(1,$facenum,0); for($i=1;$i<=$rollnum;$i++){ $dice=mt_rand(1,$facenum); $total=$arrayDice[$dice]++; } foreach($arrayDice as $key=>$val){ print "{$key}:{$val}<br>\n"; } }
回答3件
あなたの回答
tips
プレビュー