2013-09-23 133 views
0

我想用PHP腳本加/減隨機數變量

目前我得到的最後一個記錄創造一些隨機的SQL數據,生成1和2之間的隨機數...如果它是一個1我會添加一個隨機數到別的記錄如果它的2我會減去

隨機數的問題是,它使吐出減去隨機數!我只想要積極的隨機數。

$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

根據你的代碼,這是有效的,如果你的$ temp = 1和$ rand = 2,那麼$ temprand將是-1。

您可以添加一個檢查你的$ TEMP和$光應該總是大於或等於最大的隨機數,所以當你減去(的最大值)從$臨時隨機數或$照亮你將最終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