【问题标题】:Random Number PHP Confusion随机数 PHP 混淆
【发布时间】:2011-02-22 04:19:55
【问题描述】:

假设我有 2 个小数(例如 0.75 和 .25)。我正在尝试制作一个函数来获取这两个数字并随机选择一个“获胜者”,但基于这两个数字的百分比。简而言之,我需要 0.75 号码比 0.25 号码更有机会被选中(0.25 号码仍然可以被选中,但只有 25% 的机会)。我该怎么做呢?

【问题讨论】:

  • 抱歉,虽然您的问题在概念上是有道理的(权衡选择一个或另一个数字的几率),但我很难用代码来想象它。你能把你到目前为止写的东西贴出来吗?
  • @Brian Driscoll 这也是我遇到的问题。第二个答案似乎做到了,而且很简单。

标签: php math random srand


【解决方案1】:
$prob = array(25, 75);

$total = array_sum($prob);

$rand = mt_rand(1, $total);

var_dump($rand);

foreach ($prob as $i => $p) {
    $rand -= $p;

    if ($rand <= 0) {
        $winner = $i;
        break;
    }
}

var_dump($winner);

【讨论】:

    【解决方案2】:

    如果它们的总和不总是 1,这仍然有效:

    $winner = ( (rand(0,1000) / 1000) <= ($first / ($first + $second)) ) ? $first : $second;
    

    【讨论】:

      【解决方案3】:
      $var1 = 25;
      $var2 = 75;
      $total = $var1 + $var2;
      
      $rand = mt_rand(1, $total);
      
      if($rand <= $var1)
          echo("Value one ({$var1}) Wins!");
      else
          echo("Value two ({$var2}) Wins!");
      

      类似的东西应该可以工作。

      【讨论】:

        【解决方案4】:

        在这种简单的情况下,您可以使用:

         if (rand(0,1000)/1000 <= 0.25)
         {
             $winner = $first;   // 25% number
         }
         else {
             $winner = $second;  // 75% number
         }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-17
          • 1970-01-01
          • 2011-07-27
          • 2020-06-01
          • 1970-01-01
          • 2011-05-24
          • 2016-10-04
          相关资源
          最近更新 更多