Search code examples
phpintegernumbersrange

Evenly distributed integers within a range


Lets say I have a range between 0 and 100 and I want an array returned containing 3 integers which are evenly distributed within that range, what would be the best way to do this?

For example:

Range: 0-100
Wanted: 3
Returned: 25, 50, 75


Solution

  • Pseudo code:

    function distributeIntegers(int wanted, int rangeLow, int rangeHigh)
        int increment = (rangeHigh - rangeLow) / (wanted + 1)
        array r = new array()
        for (int i = rangeLow + increment; i < rangeHigh; i += increment)
            r.push(i)
        return r
    

    PHP:

    function distributeIntegers($wanted = 3, $rangeLow = 0, $rangeHigh = 100){
        $increment = ($rangeHigh - $rangeLow) / ($wanted + 1);
        $r = array();
        for ($i = $rangeLow + $increment; $i < $rangeHigh; $i += $increment)
            $r []= $i;
        return $r;
    }
    /*
      examples:
    
      call:
          distributeIntegers();
      returns:
                 [0] => 25
                 [1] => 50
                 [2] => 75
    
      call:
          distributeIntegers(4);
      returns:
                 [0] => 20
                 [1] => 40
                 [2] => 60
                 [3] => 80
    
      call:
          distributeIntegers(5, 50, 200);
      returns:
                 [0] => 75
                 [1] => 100
                 [2] => 125
                 [3] => 150
                 [4] => 175
    */