RAND( ) RAND( 数値 )
RAND関数を使用することで 0.0 ~ 1.0 の乱数を生成することができます。
引数に数値(シード値)を指定した場合、シード値をもとに数値が生成されます。
引数の数値(シード値)が同じ場合、結果として返される数値は同じとなります。
mysql> -- シード値を指定しない場合は毎回異なる値を返す mysql> SELECT RAND( ); +------------------+ | RAND( ) | +------------------+ | 0.94277458725756 | +------------------+ 1 row in set (0.00 sec) mysql> SELECT RAND( ), RAND( ), RAND( ); +-----------------+------------------+------------------+ | RAND( ) | RAND( ) | RAND( ) | +-----------------+------------------+------------------+ | 0.7946467947165 | 0.14491024254347 | 0.34061085930151 | +-----------------+------------------+------------------+ 1 row in set (0.00 sec)
mysql> -- シード値が同じであれば同じ数値を返す mysql> SELECT RAND( 59 ); +------------------+ | RAND( 59 ) | +------------------+ | 0.91602387271451 | +------------------+ 1 row in set (0.00 sec) mysql> SELECT RAND( 59 ), RAND( -65534 ), RAND( -65534 ); +------------------+------------------+------------------+ | RAND( 59 ) | RAND( -65534 ) | RAND( -65534 ) | +------------------+------------------+------------------+ | 0.91602387271451 | 0.65534250592379 | 0.65534250592379 | +------------------+------------------+------------------+ 1 row in set (0.00 sec)
シード値に文字を指定した場合、数値の0を指定した場合と同じ結果が返されます。
mysql> SELECT RAND( 0 ), RAND( 'a' ), RAND( '漢字' ); +------------------+------------------+------------------+ | RAND( 0 ) | RAND( 'a' ) | RAND( '漢字' ) | +------------------+------------------+------------------+ | 0.15522042769494 | 0.15522042769494 | 0.15522042769494 | +------------------+------------------+------------------+ 1 row in set (0.00 sec)