PHP生成给定值的随机减号或加号百分比

时间:2013-07-24 16:41:33

标签: php random

我有一个值,让我们说它的1000。 现在我必须生成1000的随机减号或加号百分比。 特别是我必须随机生成1000或20%或+ 20%的1000%。

我尝试使用rand()abs(),但没有成功..

PHP有没有办法实现上述目标?

4 个答案:

答案 0 :(得分:1)

一些基础数学

$number = 1000;
$below = -20;
$above = 20;
$random = mt_rand(
    (integer) $number - ($number * (abs($below) / 100)),
    (integer) $number + ($number * ($above / 100))
);

答案 1 :(得分:0)

$number = 10000;
$percent = $number*0.20;
$result =  (rand(0,$percent)*(rand(0,1)*2-1));

echo $result;

或者,如果你想要某种运行平衡类型的东西......

function plusminus($bank){
 $percent = $bank*0.20;
 $random = (rand(0,$percent)*(rand(0,1)*2-1));
 return $bank + $random;
}

$new =  plusminus(10000);
$new = plusminus($new);
echo $new."<br>";
$new = plusminus($new);
echo $new."<br>";
$new = plusminus($new);
echo $new."<br>";
$new = plusminus($new);
echo $new."<br>";
$new = plusminus($new);
echo $new."<br>";
$new = plusminus($new);

答案 2 :(得分:0)

rand(0,1)似乎对我来说很好。也许你应该确保你的百分比是十进制格式。

<?php
$val = 10000;
$pc = 0.2;
$result = $val * $pc;
if(rand(0, 1)) echo $result; else  echo -$result;
if(rand(0, 1)) echo $result; else  echo -$result;
if(rand(0, 1)) echo $result; else  echo -$result;
if(rand(0, 1)) echo $result; else  echo -$result;
if(rand(0, 1)) echo $result; else  echo -$result;
?>

答案 3 :(得分:0)

我知道这确实很老了,但是偶然发现它需要类似的地方,我需要一个随机符号(+或-),因此选择了一个随机布尔值:

<?php $sign = (rand(0,1) == 1) ? '+' : '-'; ?>

感谢this answer

所以我会选择这样的解决方案:

<?php

// Alter these as needed
$number = 1000;
$percentage = 20;

// Calculate the change
$change_by = $number * ($percentage / 100);

// Set a boolean at random
$random_boolean = rand(0,1) == 1; 

// Calculate the result where we are using plus if true or minus if false
$result = ($random_boolean) ? $number + $change_by : $number - $change_by;

// Will output either 1200 or 800 using these numbers as an example
echo $result;

?>