2017-01-27 5 views
-2

私たちは乱数ゲームを作成しています。我々は現在、以下の文でMySQLのランド()関数を使用している:MySQL Rand()からPHP random_intに変更

private function doPreEventStart($user) { 
$row = db_fetch_item("SELECT resultid FROM ResultPackage 
    where ResultPackage.slotid like '%{$this->curSlotId}' 
    and ResultPackage.PackageID like '%{$user->packageid}%' 
    ORDER BY RAND() LIMIT 1"); 
$this->curResultId = $row['resultid']; 
} 

私たちは、PHPの関数Random_Intにこれを変更する必要があります。誰かが上記のコードを変更することでこれを行う方法を提案することができます。 SQL文のWHERE条件からわかるように、乱数は依然として特定の範囲内にある必要があります。

+0

をあなたが投稿する前にどんな研究をしましたか? – shmosel

+0

現在の方法で何が問題になっていますか? – Strawberry

+0

現在の方法は実際にランダムではありません。 "RAND()は完全なランダムジェネレータではありません。同じMySQLバージョンのプラットフォーム間で移植可能な、乱数を生成する高速な方法です。"私たちの研究から、Random_intがより良い方法であることが分かった – Edge

答えて

0

私はこのコードをテストしてい:

private function doPreEventStart($user) { 
    $row = db_fetch_item("SELECT resultid as MaxResult FROM ResultPackage 
     where ResultPackage.slotid like '%{$this->curSlotId}' 
     and ResultPackage.PackageID like '%{$user->packageid}%' 
     ORDER BY resultid desc LIMIT 1"); 
    $this->MaxResult = $row['MaxResult']; 


    $row = db_fetch_item("SELECT resultid as MinResult FROM ResultPackage 
     where ResultPackage.slotid like '%{$this->curSlotId}' 
     and ResultPackage.PackageID like '%{$user->packageid}%' 
     ORDER BY resultid asc LIMIT 1"); 
    $this->MinResult = $row['MinResult']; 

    $this->curResultId = int rand (int $MinResult , int $MaxResult) 
    } 
関連する問題