Задача
Вам нужен источник случайных чисел.
Решение
Вызовите функцию MySQL RAND().
Обсуждение
В MySQL есть функция RAND(), которая генерирует случайные числа в диапазоне от 0 до 1:
mysql> SELECT RAND(), RAND(), RAND();
+-------------------+---------------------+--------------------+
| RAND() | RAND() | RAND() |
+-------------------+---------------------+--------------------+
| 0.31466114177803 | 0.89354679723601 | 0.52375059157959 |
+-------------------+---------------------+--------------------+
Если указать функции целый аргумент, то RAND() использует заданное значение как начало последовательности случайных чисел. При каждой установке определенного значения в качестве начального RAND() будет генерировать повторяющиеся серии чисел:
mysql> SELECT RAND(1), RAND(), RAND();
+--------------------+--------------------+--------------------+
| RAND(1) | RAND() | RAND() |
+--------------------+--------------------+--------------------+
| 0.18109050223705 | 0.75023211143001 | 0.20788908117254 |
+--------------------+--------------------+--------------------+
mysql> SELECT RAND(20000000), RAND(), RAND();
+--------------------+---------------------+--------------------+
| RAND(20000000) | RAND() | RAND() |
+--------------------+---------------------+--------------------+
| 0.24628307879556 | 0.020315642487552 | 0.36272900678472 |
+--------------------+---------------------+--------------------+
mysql> SELECT RAND(1), RAND(), RAND();
+--------------------+--------------------+--------------------+
| RAND(1) | RAND() | RAND() |
+--------------------+--------------------+--------------------+
| 0.18109050223705 | 0.75023211143001 | 0.20788908117254 |
+--------------------+--------------------+--------------------+
mysql> SELECT RAND(20000000), RAND(), RAND();
+--------------------+---------------------+--------------------+
| RAND(20000000) | RAND() | RAND() |
+--------------------+---------------------+--------------------+
| 0.24628307879556 | 0.020315642487552 | 0.36272900678472 |
+--------------------+---------------------+--------------------+
Если вы хотите задавать начало последовательности случайных чисел случайным образом, выбирайте начальное значение RAND(), используя источник энтропии. Возможными источниками являются текущая временная метка и идентификатор соединения, по отдельности или в сочетании:
mysql> SELECT RAND(UNIX_TIMESTAMP()) AS rand1,
-> RAND(CONNECTION_ID()) AS rand2,
-> RAND(UNIX_TIMESTAMP()+CONNECTION_ID()) AS rand3;
+-------------------+---------------------+--------------------+
| rand1 | rand2 | rand3 |
+-------------------+---------------------+--------------------+
| 0.50452774158169 | 0.18113064782799 | 0.50456789089792 |
+-------------------+---------------------+--------------------+
Однако если у вас есть другие источники начальных значений, лучше использовать их. Например, если в вашей системе имеется устройство /dev/random или /dev/urandom, то вы можете читать это устройство и использовать его для того, чтобы сгенерировать начальное значение для RAND().