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;
  }
}

Trzy miesiące temu na naszej stronie…

Artykuł: Intel Core i9

Intel Core i9

Artykuł: Święto Lotnictwa Polskiego

Święto Lotnictwa Polskiego

Artykuł: Sabayon Linux

Sabayon Linux

Artykuł: Władysław Wiśniewski

Władysław Wiśniewski

Artykuł: Quiz: Robert Lewandowski

Quiz: Robert Lewandowski

Artykuł: Bogumił Nowotny

Bogumił Nowotny

Artykuł: Stanisław Wyspiański

Stanisław Wyspiański

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły