加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

生成PHP范围内的随机浮点数

发布时间:2021-07-06 05:20:29 所属栏目:大数据 来源: https://www.jb51.cc
导读:我有一个代码,通过以下代码初始化骰子对象: public function initializeDiceSides($totalSides, $fair, $maxProbability = 100) { $maxTemp = $maxProbability; $sides = array(); for ($side = 0; $side $totalSides; $side++) { //if we want fair dice j

我有一个代码,通过以下代码初始化骰子对象:

public function initializeDiceSides($totalSides, $fair, $maxProbability = 100) {
   $maxTemp = $maxProbability;
   $sides = array();

   for ($side = 0; $side < $totalSides; $side++) {
     //if we want fair dice just generate same probabilities for each side
     if ($fair === true) {
       $probability = number_format($maxProbability/$totalSides, 5);
     } else {
       //set probability to random number between 1 and half of $maxTemp
       $probability = number_format(mt_rand(1, $maxTemp/2), 5);

       //subtract probability of current side from maxtemp
       $maxTemp= $maxTemp- $probability;

       $sides[$side] = $probability;
     }
   }

   echo $total . '<br />';
   print_r($sides);
}

上面的代码打印:

89
Array ( [0] => 48.00000 [1] => 13.00000 [2] => 14.00000 
        [3] => 9.00000 [4] => 2.00000 [5] => 2.00000 )

我希望能够生成浮点数而不是整数,我希望有类似的东西

Array ( [0] => 48.051212 [1] => 13.661212 [2] => 14.00031 
        [3] => 9.156212 [4] => 2.061512 [5] => 2.00000 )

解决方法:

一种简单的方法是使用lcg_value并与范围相乘并添加最小值

function random_float ($min,$max) {
    return ($min + lcg_value()*(abs($max - $min)));
}

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读