SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak działa SQLite Random()

SQLite random() funkcja zwraca pseudolosową liczbę całkowitą z zakresu od -9223372036854775808 do +9223372036854775807.

Liczba pseudolosowa to liczba, która wydaje się być losowa, ale tak naprawdę nie jest losowa. Liczba pseudolosowa nie jest tak naprawdę losowa, ponieważ jej wartość została wygenerowana przez znane ziarno. Jednak pseudolosowa liczba będzie wyglądać na losową, jeśli użytkownik nie ma wiedzy na temat źródła lub algorytmu, który ją utworzył.

Dlatego liczby pseudolosowe są często uważane za wystarczająco dobre dla wielu zastosowań.

Przykład

Oto przykład generowania liczby pseudolosowej za pomocą random() funkcja.

SELECT random();

Wynik:

-882536775989953141

Tylko pozytywne wartości

Możesz połączyć random() z abs() generować tylko wartości dodatnie.

SELECT abs(random());

W tym przypadku, jeśli random() generuje wartość ujemną, abs() zamiast tego zwróci wartość bezwzględną.

Aby zademonstrować, jak abs() działa, oto co się stanie, jeśli przekażę (ujemną) liczbę losową z pierwszego przykładu do abs() funkcja:

SELECT abs(-882536775989953141);

Wynik:

882536775989953141

Więc jeśli przekażemy random() do abs() i random() generuje wartość ujemną, abs() zwróci tę wartość jako wartość dodatnią.

Wartość od 0 do 100

Oto przykład generowania liczby dodatniej od 0 do 100.

SELECT abs(random() % 100);

Oto przykład wyboru wielu losowych wartości.

SELECT 
  abs(random() % 100) AS R1,
  abs(random() % 100) AS R2,
  abs(random() % 100) AS R3;

Wynik:

R1          R2          R3        
----------  ----------  ----------
17          79          90        

Zwróć losowe wiersze

Możesz użyć random() w ORDER BY klauzula zapytania bazy danych, aby zwrócić losowe wiersze.

Oto przykład.

SELECT * FROM Artist 
ORDER BY random() LIMIT 5;

Wynik:

ArtistId    Name                                    
----------  ----------------------------------------
131         Smashing Pumpkins                       
127         Red Hot Chili Peppers                   
169         Black Eyed Peas                         
60          Santana Feat. Dave Matthews             
240         Gustav Mahler                           

A oto, co otrzymam, jeśli uruchomię go ponownie:

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      

Jeśli masz dużą tabelę, możesz zmodyfikować zapytanie w taki sposób:

SELECT * FROM Artist 
WHERE ArtistId IN 
  (SELECT ArtistId FROM Artist ORDER BY random() LIMIT 5);

Wynik:

ArtistId    Name                                    
----------  ----------------------------------------
45          Sandra De Sá                            
105         Men At Work                             
110         Nirvana                                 
205         Chris Cornell                           
267         Göteborgs Symfoniker & Neeme Järvi     

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaktualizować i usunąć listę Wyświetl dane w bazie danych SQLite za pomocą nasłuchu kliknięć?

  2. Close nigdy nie zostało wyraźnie wywołane w bazie danych

  3. Wstaw dane JSON do bazy danych SQLite w Androidzie

  4. Jak działa SQLite Count()

  5. SQLite JSON_EACH()