Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Generator liczb pseudolosowych

piątek,

Generator liczb pseudolosowych

Generator liczb pseudolosowych to mechanizm, który na podstawie niewielkiej ilości informacji (ziarno, zarodek, ang. seed) generuje dane podobne do uzyskanych z prawdziwego losowego źródła. Często do uzyskania pseudolosowej liczby wykorzystany zostaje bieżący czas systemowy. W języku Javascript generatorem liczb pseudolosowych jest metoda Random obiektu Math. Zwraca ona liczbę zmiennoprzecinkową z zakresu od 0 (włącznie) do 1 (bez jedynki). Ten zakres wydaje się bardzo skromny, jednak jest to błędne przekonanie.

We wszystkich przykładach wykorzystano taką samą strukturę HTML. Zaprezentowano go poniżej. Jeśli chcesz umieścić kod kilku przykładów na jednej stronie zmień identyfikatory (atrybut id) w kodzie HTML i Javascript, ponieważ muszą być one unikalne.

<p>
	<button id="generuj">Generuj</button>
	<span id="wynik"></span>
</p>

Przykład 1

Pierwszy przykład to zastosowanie podstawowej funkcjonalności metody Nath.random(). Po kliknięciu elementu oznaczonego identyfikatorem "generuj" (wiersz nr 2), znacznik z identyfikatorem "wynik" otrzymuje zawartość wygenerowaną przez wywołanie metody Math.random() (wiersz nr 3). Budowa kodu Javascript w kolejnych przykładach jest bardzo podobna, zawsze różni się tylko jednym szczegółem, który pozwala generować liczby pseudolosowe z różnych zakresów. Działanie kodu z przykładów można przetestować klikając widoczny przycisk „Generuj”, najlepiej zrobić to kilkukrotnie, aby ocenić stopień losowości otrzymanych wyników.

window.onload = function() {
  document.getElementById('generuj').onclick = function() {
  	document.getElementById('wynik').innerHTML = Math.random();
  }
}

Przykład 2

Drugi przykład to generowanie liczb z zakresu 0-9. Wynik otrzymany przez Math.random() pomnożono przez dziesięć, a następnie przekazano do metody Math.floor(), która zwraca największą liczbę całkowitą mniejszą od lub równą przekazanej jako argument. W efekcie otrzymywana jest liczba całkowita z zakresu 0-9. Metoda Math.random() nie zwraca nigdy jedynki, dlatego efekt jej działania pomnożony przez dziesięć w żadnym przypadku nie da dziesięć.

window.onload = function() {
  document.getElementById('generuj').onclick = function() {
  	document.getElementById('wynik').innerHTML = Math.floor(Math.random() * 10);
  }
}

Przykład 3

Jeśli wśród możliwych wyników ma znaleźć się liczba dziesięć, poprzedni przykład wymaga małej przeróbki. Wystarczy przemnożyć wynik działania Math.random() przez jedenaście, wtedy generowane są liczby z zakresu 0-10.

window.onload = function() {
  document.getElementById('generuj').onclick = function() {
  	document.getElementById('wynik').innerHTML = Math.floor(Math.random() * 11);
  }
}

Przykład 4

Pozbycie się wartości zero z otrzymywanych wyników jest trywialnie proste. Należy wygenerować liczbę z zakresu 0-9 (przykład nr 2), a następnie dodać do niej jeden. Teraz generowane są liczby z zakresu 1-10.

window.onload = function() {
  document.getElementById('generuj').onclick = function() {
  	document.getElementById('wynik').innerHTML = Math.floor(Math.random() * 10) + 1;
  }
}

Przykład 5

Po przeanalizowaniu poprzednich przykładów łatwo jest poszerzyć zakres. Poniższy generator zwraca liczbę pseudolosową z zakresu 1-100.

window.onload = function() {
  document.getElementById('generuj').onclick = function() {
  	document.getElementById('wynik').innerHTML = Math.floor(Math.random() * 100) + 1;
  }
}
Artykuł: Harmonogram egzaminów maturalnych

Harmonogram egzaminów maturalnych

Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły