No MySQL, o
RAND()
função permite que você gere um número aleatório. Especificamente, a função retorna um valor de ponto flutuante aleatório v no intervalo 0 <= v < 1.0
. Você também pode influenciar o número aleatório fornecendo um valor de semente como argumento.
Sintaxe
A sintaxe fica assim:
RAND([N])
Onde
N
é um valor de semente opcional que você pode usar para influenciar o resultado. Exemplo 1 – Sem argumentos
Aqui está um exemplo básico para demonstrar o que acontece quando não fornecemos um argumento.
SELECT RAND();
Resultado:
+--------------------+ | RAND() | +--------------------+ | 0.4335442291885095 | +--------------------+
O resultado não é uma constante – será diferente cada vez que você o executar.
Aqui está um exemplo do que acontece quando executamos vários
RAND()
funções juntos. SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Resultado:
+--------------------+---------------------+---------------------+ | Result 1 | Result 2 | Result 3 | +--------------------+---------------------+---------------------+ | 0.9413559538697414 | 0.40614711251682334 | 0.20666773170853753 | +--------------------+---------------------+---------------------+
Exemplo 2 – Usando um valor inicial
Conforme mencionado, você pode passar um argumento para determinar o valor da semente. Isso permite que você influencie a saída da função.
SELECT RAND(5);
Resultado:
+---------------------+ | RAND(5) | +---------------------+ | 0.40613597483014313 | +---------------------+
Nesse caso, a função retornará o mesmo valor todas as vezes se um valor de argumento igual for fornecido.
SELECT RAND(5) 'Result 1', RAND(5) 'Result 2', RAND(5) 'Result 3';
Resultado:
+---------------------+---------------------+---------------------+ | Result 1 | Result 2 | Result 3 | +---------------------+---------------------+---------------------+ | 0.40613597483014313 | 0.40613597483014313 | 0.40613597483014313 | +---------------------+---------------------+---------------------+
Exemplo 3 – Usando RAND() como parte de uma expressão
Você pode usar o
RAND()
funcionam como parte de uma expressão. SELECT RAND()*10;
Resultado:
+-------------------+ | RAND()*10 | +-------------------+ | 8.148973517258627 | +-------------------+
Exemplo 4 – Retornando um número inteiro aleatório entre dois números
Você pode combinar o
RAND()
função com o FLOOR()
função para retornar um inteiro aleatório entre dois números. Veja como gerar um inteiro entre 5 e 10 (inclusive).
SELECT FLOOR(RAND()*(10-5+1)+5);
Resultado:
+--------------------------+ | FLOOR(RAND()*(10-5+1)+5) | +--------------------------+ | 7 | +--------------------------+
Vamos executar o mesmo código várias vezes para ver os resultados variados.
SELECT FLOOR(RAND()*(10-5+1)+5) 'Result 1', FLOOR(RAND()*(10-5+1)+5) 'Result 2', FLOOR(RAND()*(10-5+1)+5) 'Result 3';
Resultado:
+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | +----------+----------+----------+ | 7 | 9 | 6 | +----------+----------+----------+