【问题标题】:How to generate several random numbers included in a range and whose evolution is in a range in percent in PHP?如何生成包含在一个范围内的几个随机数,并且其演变在 PHP 中的百分比范围内?
【发布时间】:2020-03-06 14:10:05
【问题描述】:

如何生成一个范围内包含的若干个随机数,其演化在一个范围内的百分比?

目标是生成随机数,同时避免显着差异。

我尝试了这段代码,但在 php 7.4 中,随机数只会增加,直到出现致命错误

$min=400; // starting value
$max = 600; // starting value

for ($i = 1; $i <= 1000; $i++) 
{
    $nb = random_int($min, $max);

    echo $nb . "\n";

    $percentage_min = random_int(0, 10);
    $percentage_max = random_int(10, 20);

    $min = floor($nb-($nb * $percentage_min)/100);

    $max = floor($nb+($nb * $percentage_max)/100);
}

【问题讨论】:

  • @Cid 进化在百分比最小值和最大值范围内
  • 我想,$percentage 没有定义,PHP 会解释为 0。所以任何东西乘以零都是零!零除以 100 也是零。
  • @t 只是编辑错误,我更正了我的帖子
  • 如前所述将 $percentage 固定为 $percentage_min,结果不为 0。
  • 经过数百次迭代,数字溢出最大大小和错误:未捕获的类型错误:random_int() 期望参数 2 为 int,给定浮点数 ... random_int(7.3019726629039E+18, 9.3433843751136E+18)

标签: php random


【解决方案1】:

解决办法

$min=0; // starting value
$max = 600; // starting value

$min_absolute = 100;
$max_absolute = 1000;

for ($i = 1; $i <= 2000; $i++) 
{
    if($max > $max_absolute)
    {
        $min = $min_absolute;
        $max = random_int($min_absolute, $max_absolute);
    }

    $nb = random_int($min, $max);

    echo $nb . "\n";

    $percentage_min = random_int(0, 10);
    $percentage_max = random_int(10, 20);

    $min = floor($nb-($nb * $percentage_min)/100);
    $max = floor($nb+($nb * $percentage_max)/100);
}

编辑:看到匿名伪君子对他们不理解的问题及其解决方案投反对票很有趣?

【讨论】:

  • 不是我的反对意见,而是一些代码以及 "Here is the solution" 并不能解释哪里出了问题、发生了什么变化以及原因。并且对未来的读者没有用
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
相关资源
最近更新 更多