0

しばらくプログラムしていませんが、ここで私はこの単純な問題を抱えています。基本的に、最大制限内にあるが、ランダムに(毎回)フィールドを呼び出すために互いに距離を設定した2つの乱数を生成する必要がありますmysqlLIMITを使用するデータベース。

元。95個のデータベースフィールド($ max)、返されるフィールド= 20($ fields)(返されるフィールドの数)、または範囲制限20(つまり、min-maxの差は20)があるとします。

SELECT...............  LIMIT $a, $fields
$a - $b = 20
$b < 95

私はただ使用します...

 $a = floor(mt_rand(0, ($max-$fields))); 

$ aを生成し、必要なすべての情報を提供する$ fields値を使用します(つまり、レコードの取得を開始する場所($ a)と取得するレコードの数($ fields))

これを行う方法に関する別の方法についてのアイデアはありますか?

4

1 に答える 1

0

テーブルが常に 2 つの乱数の必要な距離よりも大きい場合は、次のように処理できます。

// $row_count is the number of rows you have in the database 
$max = mt_rand($distance, $row_count);
$min = $max - $distance;
// now you can use these in sql like
$sql = "select ... offset {$min} limit {$distance}";

参考文献:mt_rand

于 2012-07-30T20:02:02.910 に答える