PHP ランダム選択アルゴリズム (3)

藏色散人
リリース: 2021-01-11 10:48:14
オリジナル
9060 人が閲覧しました

前回の記事「PHP Random Picking Oneアルゴリズム (2)」では、「猿王の公正な選択」であるPHP Random Picking Oneアルゴリズムの実装アイデアを詳しく紹介しました。面接の質問の解決策。

PHP ランダム選択アルゴリズム (3)

# 次に、上記の記事のコード メソッドを組み合わせて、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 行目の前にブレークポイントを作成します。

PHP ランダム選択アルゴリズム (3)

#次に、ブラウザを開いてこのコードを実行すると、次のようにブレークポイントがフォーカスを取得します。

PHP ランダム選択アルゴリズム (3)

#1 から n までの配列を作成します。

PHP ランダム選択アルゴリズム (3)

次に、while ループによって要素を削除するかどうかが決定されます。

PHP ランダム選択アルゴリズム (3)

このサイクルは「Monkey King」につながります。

関連する推奨事項: 「PHPStorm で xdebug ツールを構成して使用する方法は?」 (画像、テキスト、およびビデオチュートリアル) >>

これで、PHP のランダム選択アルゴリズムの紹介は終わりです。ローカルでテストすることもできます。実際はとても簡単なので、必要としている友達に役立つことを願っています。

以上がPHP ランダム選択アルゴリズム (3)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!