2013-07-24 2 views
0

У меня есть значение, скажем, его 1000. Теперь я должен создать случайный минус или плюс процент от 1000. В частности, мне нужно сгенерировать или - 20% от 1000 или + 20% от 1000 случайным образом.PHP генерирует случайный минус или плюс процент от заданного значения

Я попытался с помощью rand() и abs(), но без успеха ..

Есть ли способ в PHP для достижения выше?

+1

Где находится случайность? Минус или плюс, и всегда 20%? Или разные проценты, и всегда плюс и минус? Будьте более наглядными! – Sven

ответ

1

Немного основных математики

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

Это всегда возвращает 800 –

+0

обратный знак для $ выше и $ ниже, как я это сделал в моем редактировании –

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); 
0

рандов (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; 
?> 
Смежные вопросы