PHP random selection algorithm (3)

藏色散人
Release: 2021-01-11 10:48:14
Original
9151 people have browsed it

In the previous article "PHP Random Picking One Algorithm (2)", we introduced in detail the implementation idea of ​​PHP Random Picking One Algorithm, which is the "Fair Selection of Monkey King" interview question solution.

PHP random selection algorithm (3)

# Now we will combine the code methods in the above articles to show you the process of debugging and running the algorithm through Xdebug.

The question is as follows:

A group of monkeys line up in a circle and are numbered according to 1, 2,...,n. Then start counting from the 1st one, count to the mth one, kick it out of the circle, start counting from behind it, count to the mth one, kick it out..., and continue in this way until the end. Until there is only one monkey left, that monkey is called the king. Programming is required to simulate this process, input m, n, and output the number of the last king.

The code is as follows:

<?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);
Copy after login

First we create a breakpoint before the fourth line of code.

PHP random selection algorithm (3)

#Then open the browser and run this code. The breakpoint successfully obtains focus, as follows.

PHP random selection algorithm (3)

#Create an array from 1 to n.

PHP random selection algorithm (3)

Then the while loop determines whether to delete the element.

PHP random selection algorithm (3)

This cycle leads to the "Monkey King".

Related recommendations: "How to configure and use the xdebug tool in PHPStorm? (Picture, text and video tutorial)

So that’s it for the introduction of PHP’s random selection algorithm. You can also test it locally. It's actually very simple. I hope it will be helpful to friends who need it!

The above is the detailed content of PHP random selection algorithm (3). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!