O SQLite
random() A função retorna um número inteiro pseudo-aleatório entre -9223372036854775808 e +9223372036854775807. Um número pseudo-aleatório é um número que parece ser aleatório, mas não é verdadeiramente aleatório. Um número pseudo-aleatório não é verdadeiramente aleatório porque seu valor foi gerado por uma semente conhecida. No entanto, um número pseudo-aleatório parecerá aleatório se o usuário não tiver conhecimento da semente ou do algoritmo que o criou.
Portanto, números pseudo-aleatórios geralmente são considerados bons o suficiente para muitas aplicações.
Exemplo
Aqui está um exemplo de geração de um número pseudo-aleatório com o
random() função. SELECT random(); Resultado:
-882536775989953141
Somente valores positivos
Você pode combinar
random() com abs() para gerar apenas valores positivos. SELECT abs(random()); Neste caso, se
random() gera um valor negativo, abs() retornará o valor absoluto. Para demonstrar como
abs() funciona, eis o que acontece se eu passar o número aleatório (negativo) do primeiro exemplo para o abs() função:SELECT abs(-882536775989953141); Resultado:
882536775989953141
Então, se passarmos
random() para abs() , e random() gera um valor negativo, abs() retornará esse valor como um valor positivo. Valor entre 0 e 100
Aqui está um exemplo de geração de um número positivo entre 0 e 100.
SELECT abs(random() % 100); Aqui está um exemplo de seleção de vários valores aleatórios.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3; Resultado:
R1 R2 R3 ---------- ---------- ---------- 17 79 90
Retornar linhas aleatórias
Você pode usar
random() em um ORDER BY cláusula de uma consulta de banco de dados para retornar linhas aleatórias. Aqui está um exemplo.
SELECT * FROM Artist
ORDER BY random() LIMIT 5; Resultado:
ArtistId Name ---------- ---------------------------------------- 131 Smashing Pumpkins 127 Red Hot Chili Peppers 169 Black Eyed Peas 60 Santana Feat. Dave Matthews 240 Gustav Mahler
E aqui está o que eu recebo se eu executá-lo novamente:
ArtistId Name ---------- ---------------------------------------- 234 Orchestra of The Age of Enlightenment 126 Raul Seixas 76 Creedence Clearwater Revival 182 Nega Gizza 63 Santana Feat. Lauryn Hill & Cee-Lo
Se você tiver uma tabela grande, talvez queira modificar sua consulta para algo assim:
SELECT * FROM Artist
WHERE ArtistId IN
(SELECT ArtistId FROM Artist ORDER BY random() LIMIT 5); Resultado:
ArtistId Name ---------- ---------------------------------------- 45 Sandra De Sá 105 Men At Work 110 Nirvana 205 Chris Cornell 267 Göteborgs Symfoniker & Neeme Järvi