MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで特定のリストから乱数を選択する方法

MySQLで特定のリストから乱数を選択する方法

MySQLでは、ELT()関数とRAND()関数を組み合わせることで、あらかじめ用意した特定の値のリストからランダムに1つの値を選択できます。

基本的な仕組み

RAND()は0以上1未満の乱数を返します。これに10を掛け、FLOOR()で小数点以下を切り捨て、さらに1を加えることで「1〜10」の整数を生成できます。この数値をELT()関数のインデックスとして渡すことで、リスト内の対応する位置にある値が返される仕組みです。

実行例

以下のクエリでは、100から1000までの10個の値の中からランダムに1つを選択しています。

mysql> SELECT ELT(FLOOR(RAND() * 10) + 1,
    100,200,300,400,500,600,700,800,900,1000) AS random_value_from_listOfValues;

実行結果の例:

+--------------------------------+
| random_value_from_listOfValues |
+--------------------------------+
| 1000                           |
+--------------------------------+
1 row in set (0.00 sec)

再度実行すると結果が変わる

同じクエリをもう一度実行してみましょう。RAND()による乱数を使用しているため、実行するたびに選択される値が変わります。

mysql> SELECT ELT(FLOOR(RAND() * 10) + 1,
    100,200,300,400,500,600,700,800,900,1000) AS random_value_from_listOfValues;

今回は次のような出力になりました。前回とは異なる値(400)が選択されていることが確認できます。

+--------------------------------+
| random_value_from_listOfValues |
+--------------------------------+
| 400                            |
+--------------------------------+
1 row in set (0.00 sec)

まとめ

ELT(FLOOR(RAND() * N) + 1, 値1, 値2, ..., 値N)という形式を使えば、任意の個数の値からランダムに1つを選択できます。テストデータの生成やサンプリング処理など、さまざまな場面で活用できる便利なテクニックなので、ぜひ覚えておきましょう。

  1. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected

  2. C#でリストからランダムな要素を選択する方法を解説

    C#でリスト(List)の中からランダムに要素を1つ選択したい場面は多くあります。くじ引きのような抽選処理や、ゲーム内でのランダムイベントなど、さまざまな用途で活用できます。この記事では、Randomクラスを使ったシンプルで確実な方法を解説します。基本的な考え方リストからランダムな要素を取得するには、以下の手順を行います。リストを作成するリストの要素数を取得するRandom.Next()メソッドで0以上・要素数未満のインデックスを生成するそのインデックスを使って要素にアクセスする手順1:リストを用意するまず、C#でリストを定義します。var list = new List<string&