2013-09-23 4 views
0

Я хочу создать несколько случайных данных SQL с помощью PHP скриптадобавления/вычитание случайного числа переменной

В настоящее время я получаю последнюю запись, генерировать случайное число между 1 и 2 ... если св 1 я буду добавьте случайное число в запись else, если его a 2 i вычитает случайное число от

проблема заключается в том, что он продолжает выплевывать минус случайные числа! Мне нужны только положительные случайные числа.

$result = mysql_query("SELECT * FROM Data ORDER BY id DESC") 
    or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 
// Print out the contents of each row into a table 

    $temp=$row['temp']; 
    $light=$row['light']; 

}; 

$name="Herbi"; 
$date=Date("o:m:d"); 
$time=Date("H:i:s"); 

$rand =rand(1,2); 
$randnu =rand(1,10); 

echo " rand:".$rand; 
switch($rand){ 

    case 1: 
     $temprand=$temp+$randnu; 
     $lightrand=$light+$randnu; 
    break; 

    case 2: 
     $temprand=$temp-$randnu; 
     $lightrand=$light-$randnu; 
    break; 
}; 
echo""; 
echo"randnu"; 
echo $randnu; 
echo " "; 
echo"lightrand"; 
echo $lightrand; 
+0

Так дайте 'рандов()' в "диапазон", который меньше, чем переменная, то вычитаем из. – djot

+0

... или использовать ['abs'] (http://php.net/manual/en/function.abs.php). Но это зависит от варианта использования и ожидаемого результата. – insertusernamehere

+0

Что вы имеете в виду «выплюнуть минус случайные числа»? Какие цифры отрицательные и где вы «выплевываете их»? –

ответ

0

на основе кода это верно, если $ темп = 1 и $ ранд = 2, то $ temprand будет -1.

Вы можете добавить проверку того, что ваш $ temp и $ light всегда должны быть больше или равны максимальным случайным числам, поэтому, когда вы выберете (максимальное) случайное число из $ temp или $ light, вы получите 0 .

if($row['temp']>=2){ 
    $temp=$row['temp']; 
}else{ 
    $temp=2; //Max of $rand =rand(1,2); 
} 

или сокращенная

$temp=($row['temp'] >= 2? $row['temp'] : 2); 
$light=($row['light'] >= 10? $row['light'] : 10); 
+0

Но даже когда я начинаю начальные значения на 25, он неожиданно переходит на -9 ... и кажется, что $ randnu и $ lightrand равны – Carlo

+0

Что происходит с -9? lightrand или temprand? – user987654321

Смежные вопросы