Generate random player strengths in a pyramid structure (PHP)

前端 未结 6 1780
醉梦人生
醉梦人生 2021-01-13 19:59

For an online game (MMORPG) I want to create characters (players) with random strength values. The stronger the characters are, the less should exist of this sort.

E

6条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-13 20:28

    It's probably easiest to use percentages in this case.

    From your examples would approximately be (converted to an array for ease of use later):

    $strength[1] = .3;  // start with a key of 1
    $strength[2] = .26;
    $strength[3] = .21;
    $strength[4] = .15;
    $strength[5] = .08;
    

    That way, you can generate a random number using mt_rand() and divide by the maximum possible value to get a number between 0 and 1:

    $rand = mt_rand() / mt_getrandmax(); // rand is some random value between 0 and 1
    

    Then you can use a foreach statement to isolate each case:

    $comparisonPercentage = 1;
    $selectedLevel = count($strength); // covers the case where mt_rand() returns 0
    foreach($strength as $level => $currentPercentage) 
    {
        $comparisonPercentage -= $currentPercentage;
        if ($rand >  $comparisonPercentage) 
        {
            $selectedLevel = $level;
            break;
        }
    }
    
    // $selectedLevel contains the level you need...
    

    If you do it this way, you only have to change the $strength array if you need to fiddle with the percentages.

提交回复
热议问题