Generator losowych liczb dziesiętnych
Generuj losowe liczby dziesiętne (float) w zadanym zakresie z kontrolą liczby miejsc po przecinku. Do testów i statystyki.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator losowych liczb dziesiętnych — float i double online
Generator losowych liczb dziesiętnych generuje losowe liczby zmiennoprzecinkowe (float/double) w podanym zakresie z wybraną precyzją (liczbą miejsc po przecinku). Idealne do testowania algorytmów, danych demo i symulacji numerycznych.
Czym są liczby zmiennoprzecinkowe (float)?
Liczby zmiennoprzecinkowe (ang. floating-point numbers) to komputerowa reprezentacja liczb rzeczywistych z częścią dziesiętną. Standardy: float (32-bit) — precyzja ok. 7 cyfr, zakres ±3.4×10^38. double (64-bit) — precyzja ok. 15–16 cyfr, zakres ±1.8×10^308. W JavaScript wszystkie liczby to de facto 64-bitowe double IEEE 754. Problem: niektóre liczby dziesiętne nie mają dokładnej reprezentacji binarnej — np. 0.1 + 0.2 ≠ 0.3 w większości języków (efekt zaokrąglenia IEEE 754).
Jak generować losowe liczby dziesiętne?
JavaScript: Math.random() zwraca liczbę z zakresu [0, 1) — do wybranego zakresu: min + Math.random() * (max - min). Z precyzją: parseFloat((min + Math.random() * (max - min)).toFixed(2)) — 2 miejsca po przecinku. Python: import random; random.uniform(min, max) — losowa liczba float. round(random.uniform(-10, 10), 3) — 3 miejsca. NumPy (Python): np.random.uniform(low=0, max=1, size=100) — tablica 100 wartości. Generator oferuje GUI do ustawienia wszystkich parametrów bez pisania kodu.
Zastosowania losowych liczb dziesiętnych
Losowe floaty są potrzebne w: testowaniu algorytmów numerycznych (sortowania, optymalizacji, ML), generowaniu danych testowych (ceny, wagi, wymiary), symulacjach Monte Carlo (matematyczne obliczenia przez losowe próbkowanie), grafice komputerowej (shading, noise, particle systems), grach komputerowych (ruch cząsteczek, losowe zdarzenia), kryptografii (seed dla CSPRNG — choć Math.random() nie jest kryptograficznie bezpieczny).
Rozkłady statystyczne dla losowych liczb
Math.random() generuje rozkład jednorodny (uniform) — każda wartość ma takie samo prawdopodobieństwo. Inne rozkłady: Normalny (Gaussa) — Box-Muller transform: Math.sqrt(-2*Math.log(Math.random())) * Math.cos(2*Math.PI*Math.random()). Wykładniczy: -Math.log(1-Math.random()) / lambda. Bernoulliego (0 lub 1 z prawdopodobieństwem p): Math.random() < p ? 1 : 0. Generator tworzy liczby z rozkładu jednorodnego — dla innych rozkładów użyj biblioteki statystycznej.
Najczęściej zadawane pytania
Jak wygenerować losową liczbę float w Pythonie?
import random; x = random.uniform(0, 100) — losowa liczba z zakresu [0, 100). Z zaokrągleniem: round(random.uniform(-5, 5), 2). Dla tablicy (NumPy): import numpy as np; arr = np.random.uniform(0, 1, size=1000) — 1000 losowych float z zakresu [0,1). Dla rozkładu normalnego: np.random.normal(mean, std, size=100).
Dlaczego 0.1 + 0.2 ≠ 0.3 w JavaScript?
To efekt IEEE 754 double precision floating point — niektóre ułamki dziesiętne nie mają dokładnej reprezentacji binarnej. 0.1 w binarnym to nieskończony ułamek (jak 1/3 w dziesiętnym). Wynik: 0.1 + 0.2 = 0.30000000000000004. Rozwiązania: parseFloat((0.1+0.2).toFixed(10)) — zaokrągl do 10 miejsc, Math.round((0.1+0.2)*100)/100 — mnóż i dziel, biblioteka Decimal.js dla finansów. Zawsze zaokrąglaj wyniki operacji float przed porównaniem.
Jak wygenerować losowy float w określonym rozkładzie (np. normalnym)?
Rozkład normalny (JavaScript, Box-Muller): function randn(mean, std) { let u = 1 - Math.random(); let v = Math.random(); let z = Math.sqrt(-2*Math.log(u)) * Math.cos(2*Math.PI*v); return mean + z * std; }. Przykład: randn(170, 10) — losowy wzrost (mean 170 cm, std 10 cm). Python: random.gauss(170, 10) lub np.random.normal(170, 10).
Jaka jest różnica między Math.random() a crypto.getRandomValues()?
Math.random(): pseudo-losowy, szybki, NIE kryptograficznie bezpieczny, ziarno zależne od silnika JS. crypto.getRandomValues(): kryptograficznie bezpieczny CSPRNG, wolniejszy, używaj do: tokenów, haseł, kluczy. Przykład crypto: const arr = new Uint32Array(1); crypto.getRandomValues(arr); const rand = arr[0] / 0xFFFFFFFF; — float [0,1). Generator używa Math.random() — dla danych testowych jest wystarczający.
Jak wylosować liczby float bez powtórzeń?
Technicznie niemożliwe dla kontinuum — prawdopodobieństwo powtórzenia precyzyjnego float jest astronomicznie małe. Dla dyskretnych wartości z precyzją N miejsc po przecinku: wygeneruj wszystkie możliwe wartości (np. [0, 0.1, 0.2...] dla N=1), następnie przetasuj (Fisher-Yates shuffle). Praktyczne: przy małej liczbie floatów z małą precyzją (np. 10 liczb z 1 miejscem z zakresu 0-5) — użyj Set i pętli while z dodawaniem dopóki nie masz N unikalnych.