MySQLで同じ乱数シーケンスを生成する方法|RAND関数のシード指定を解説
MySQLのRAND()関数は、引数なしで呼び出すと実行のたびに異なる乱数を返します。しかし、整数の引数(シード値)を渡すと、その値で乱数生成器が初期化され、同じシード値を使うたびに必ず同じ乱数列が再現されます。
同じ乱数列が再現される仕組み
RAND(N) のように整数 N を指定すると、N が乱数生成器の「種(シード)」として使用されます。シードが同一であれば、何度実行しても同じ順序・同じ値の乱数が生成されるため、テストやデバッグなど再現性が必要な場面で非常に便利です。
実行例
次の例では、RAND(1) を3回呼び出していますが、いずれもまったく同じ値が返されています。
mysql> Select RAND(1), RAND(1), Rand(1); +---------------------+---------------------+---------------------+ | RAND(1) | RAND(1) | Rand(1) | +---------------------+---------------------+---------------------+ | 0.40540353712197724 | 0.40540353712197724 | 0.40540353712197724 | +---------------------+---------------------+---------------------+ 1 row in set (0.00 sec)
ポイントまとめ
- 引数なしの RAND():呼び出しごとに異なる乱数を返す
- RAND(N) の形式:整数 N をシードとして生成器を初期化し、常に同じ乱数列を返す
- 同一クエリ内で同じシードを指定して複数回呼び出した場合も、結果は同じ値になる
このように、シード値を固定することで乱数の再現性が確保でき、データのサンプリング検証や動作確認などを安定して行うことができます。
-
MySQLのストアドプロシージャで5つの乱数を生成する方法
MySQLでランダムな数値を抽出するには、ORDER BY RAND() を活用するのが便利です。本記事では、テーブルに登録されたデータの中からランダムに5つの値を選び出し、それをストアドプロシージャとして作成・呼び出すまでの手順を、実際のコード例とともにわかりやすく解説します。 1. サンプルテーブルを作成する まず、乱数の候補となる値を格納するためのテーブルを作成します。 mysql> create table DemoTable (Value int); Query OK, 0 rows affected (0.76 sec) 2. テーブルにデータを挿入する 続いて、INSERT
-
Rubyで乱数とランダム文字列を生成する方法を徹底解説
Rubyで乱数やランダムな文字列を生成する方法を学びたいなら、ここがまさにうってつけの場所です。 この記事では、Rubyにおける乱数生成のさまざまなテクニックを、具体例とともにわかりやすく解説します。 乱数を使えば、配列からランダムに要素を選んだり、リストから当選者を抽選したり、サイコロの目をシミュレートしたりと、幅広い用途に活用できます。 Rubyには、性質の異なる複数の乱数生成方法が用意されています。 たとえば… randメソッドには3通りの使い方があります。 引数なしでrandを呼び出すと、0から1までの浮動小数点数(例: 0.4836732493)が返される 整数を引数に渡す(ran