Generator liczb losowych
Opcje
Wyjście
Szczegóły techniczne
Jak działa generator liczb losowych
Co robi narzędzie
Generator liczb losowych tworzy kryptograficznie silne losowe liczby całkowite lub zmiennoprzecinkowe, korzystając z Web Crypto API (crypto.getRandomValues). Stosuje próbkowanie odrzucające (rejection sampling), aby wyeliminować obciążenie modulo i zapewnić równomierny rozkład w dowolnym zadanym zakresie. Możesz generować pojedyncze wartości lub paczki liczb losowych z konfigurowalnymi ustawieniami minimum, maksimum i precyzji.
Typowe zastosowania dla programistów
Deweloperzy używają kryptograficznych generatorów liczb losowych do zadań wrażliwych na bezpieczeństwo, takich jak generowanie niezgadywalnych tokenów sesji, nonce’ów, losowań loteryjnych czy losowego próbkowania ze zbiorów danych. Twórcy gier używają ich do rzutów kośćmi i generowania proceduralnego, gdy liczy się uczciwość. Inżynierowie QA generują losowe dane wejściowe do fuzz testów, a data scientist używa ich do losowego próbkowania, gdy nie jest wymagana odtwarzalność.
Formaty danych, typy lub warianty
Narzędzie obsługuje generowanie liczb całkowitych w dowolnym zakresie (granice włącznie) oraz generowanie liczb zmiennoprzecinkowych z konfigurowalną precyzją dziesiętną. Próbkowanie odrzucające odrzuca wartości, które powodowałyby obciążenie modulo, gdy zakres nie dzieli się równo przez przestrzeń wyjściową źródła losowości. Bazowa entropia pochodzi z systemowego CSPRNG (CryptGenRandom w Windows, /dev/urandom w Unix) udostępnionego przez przeglądarkowe Web Crypto API.
Typowe pułapki i przypadki brzegowe
Losowość kryptograficzna jest wolniejsza niż Math.random() i niepotrzebna w zastosowaniach niezwiązanych z bezpieczeństwem, takich jak tasowanie playlisty. Próbkowanie odrzucające może teoretycznie wykonywać wiele iteracji dla patologicznych zakresów, choć w praktyce jest to pomijalne. Liczb losowych generowanych w przeglądarce nie da się zasiać (seed) dla odtwarzalności — jeśli potrzebujesz deterministycznych sekwencji do testów, użyj zamiast tego PRNG z ziarnem. Maksymalny bezpieczny zakres liczb całkowitych jest ograniczony przez JavaScriptowe Number.MAX_SAFE_INTEGER (2^53 - 1).
Kiedy używać tego narzędzia zamiast kodu
Użyj tego narzędzia w przeglądarce, gdy potrzebujesz szybko bezstronnej liczby losowej do jednorazowej decyzji, ręcznych testów lub weryfikacji, że Twoja implementacja zwraca wartości w oczekiwanych zakresach. W produkcji wywołuj crypto.getRandomValues() bezpośrednio w kodzie lub używaj natywnych funkcji CSPRNG danego języka (moduł secrets w Pythonie, SecureRandom w Javie), które integrują się z obsługą błędów i logowaniem w Twojej aplikacji.