首页 > 解决方案 > 如何计算最佳数字以用于 php 中的百分比问题

问题描述

我想使用 php 为针对儿童的百分比问题随机生成“好数字”。数字 1 是百分比,数字 2 是总数。我一直在尝试这样做,但执行时间超过 60 秒。是否可以计算和生成漂亮的数字(它在哪里找到/检查是否是整数)?

这适用于运行 MYSQL 和 PHP 的 plesk 服务器。我试过检查 Visual Basic 组合的数量(有 622 个),完成需要 0.4632853 秒。

 function genRandomNumber(){
    return (rand(5, 200));
    }
function genRandomPercent(){
    return (rand(5, 75));
    }
$number1 = genRandomPercent();
$number2 = genRandomNumber();
if (is_int(($number1/100)*$number2)==false){ 
    while (is_int(($number1/100)*$number2)==false) {
        $number1 = genRandomPercent();
        $number2 = genRandomNumber();
    }
}

我希望最终输出具有 number1 和 number2 ,其中 number2 的 number1% 是一个整数。例如,number1 = 10 和 number2 = 60,所以 60 的 10% 是 6。相反,我收到一条错误消息“PHP 致命错误:超过 60 秒的最大执行时间”

标签: phpmath

解决方案


使用 2 个循环测试所有组合更容易。要比较浮点值,必须使用 eps。

<?php
$percentStart = 5;
$percentEnd = 75;
$numberStart = 5;
$numberEnd = 200;
$eps = 1.E-9;
$results=[];
for($percent = $percentStart; $percent <= $percentEnd; $percent++){
  for($number = $numberStart; $number <= $numberEnd; $number++){
    $percentFromNumber = $percent * $number/100;
    if(fmod($percentFromNumber,1) < $eps){
      $results[] = [
        'percent' => $percent,
        'number'  => $number,
        '%number' => $percentFromNumber
      ];
    }
  }
}
var_dump($results);

使用此代码检查组合的数量(有 620 个!),需要 3 毫秒秒才能完成。


推荐阅读