前回の記事「PHP Random Picking Oneアルゴリズム (2)」では、「猿王の公正な選択」であるPHP Random Picking Oneアルゴリズムの実装アイデアを詳しく紹介しました。面接の質問の解決策。
# 次に、上記の記事のコード メソッドを組み合わせて、Xdebug を介してアルゴリズムをデバッグおよび実行するプロセスを示します。
問題は次のとおりです:
サルのグループが円形に並び、1、2、...、n に従って番号が付けられます。次に、1 番目から数え始め、m 番目まで数え、円の外に追い出し、後ろから数え始め、m 番目まで数え、追い出します...このようにして最後まで続けます。猿は一匹だけ残っており、その猿は王様と呼ばれています。このプロセスをシミュレートするには、m、n を入力し、最後の王の番号を出力するプログラミングが必要です。
コードは次のとおりです:
<?php function king($n, $m){ $monkeys = range(1, $n); //创建1到n数组 $i=0; while (count($monkeys)>1) { //循环条件为猴子数量大于1 if(($i+1)%$m==0) { //$i为数组下标;$i+1为猴子标号 unset($monkeys[$i]); //余数等于0表示正好第m个,删除,用unset删除保持下标关系 } else { array_push($monkeys,$monkeys[$i]); //如果余数不等于0,则把数组下标为$i的放最后,形成一个圆形结构 unset($monkeys[$i]); } $i++;//$i 循环+1,不断把猴子删除,或 push到数组 } return current($monkeys); //猴子数量等于1时输出猴子标号,得出猴王 } echo king(10,3);
まず、コードの 4 行目の前にブレークポイントを作成します。
#次に、ブラウザを開いてこのコードを実行すると、次のようにブレークポイントがフォーカスを取得します。
#1 から n までの配列を作成します。
次に、while ループによって要素を削除するかどうかが決定されます。
このサイクルは「Monkey King」につながります。
関連する推奨事項: 「PHPStorm で xdebug ツールを構成して使用する方法は?」 (画像、テキスト、およびビデオチュートリアル) >>
これで、PHP のランダム選択アルゴリズムの紹介は終わりです。ローカルでテストすることもできます。実際はとても簡単なので、必要としている友達に役立つことを願っています。
以上がPHP ランダム選択アルゴリズム (3)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。