我有一个值,让我们说它的1000。 现在我必须生成1000的随机减号或加号百分比。 特别是我必须随机生成1000或20%或+ 20%的1000%。
我尝试使用rand()
和abs()
,但没有成功..
PHP有没有办法实现上述目标?
答案 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;
?>