Kezdőoldal » Számítástechnika » Programozás » Miért ezzel az értékkel kell?...

Miért ezzel az értékkel kell? [JavaScript]

Figyelt kérdés

Csináltam egy lotto szám generátort, itt van a forráskód.


<html>

<head>

<title>Lotto</title>

<script>

var szam = [];


for (i=1; i<91; i++) {

szam[i-1]=i;

}


function veletlen_szam(a,b) {

return 0.5 - Math.random();

}


szam.sort(veletlen_szam);


var lotto = [];

for (i=0; i<6; i++) {

lotto[i-1]=szam[i-1];

}

document.write(lotto);



</script>

</head>

<body>

</body>

</html>

Az lenne a kérdésem hogy veletlen_szam fügvényben miért 0.5 el kell kivonni a Math.random()-ot.


2013. aug. 19. 17:25
 1/2 anonim ***** válasza:
100%

Ha te csináltad, nem tudod?:)

Ott éppen "spórolt" a fejlesztő pár sort, cserébe nehezebben áttekinthető a kód. Két dolgot kell megértéséhez: hogy működik az array.sort illetve a Math.random().

Array.sort-nak át tudsz adni egy comparing functiont, amelyet a sorbarendezés során fog használni összehasonlításokhoz. Ennek a függvénynek úgy kell működnie, hogyha a két paramétere (X és Y) közül X-et akarod Y elé mozgatni sorrendezés során, akkor 0-nál kisebb számmal térsz vissza, ha X-et Y után akarod mozgatni, akkor 0-nál nagyobbal, ha nem akarod módosítani a sorrendet, 0-t. Ez az összehasonlító függvény az általad írt kódban a 'veletlen_szam'.

A Math.random() funkció 0 és 1 közötti számot generál egyenletes eloszlással. Ezt félből levonva ugye -0.5 és 0.5 közötti számot kapsz, és ezt adod vissza a 'veletlen_szam' függvényben visszatérési értékként, amely az összehasonlító függvény működése miatt azt eredményezi, hogy véletlenszerűen lesznek rendezve az elemek.

Tehát mit csinál az egész? Összekeveri a 'szam' tömb tartalmát (mivel véletlenszerűen "rendezi"), aztán kiválasztja az első ötöt, amely így véletlenszerű lesz (1 és 90 között természetesen). Nem mondom, egyszerűbben is meg lehetett volna oldani.

2013. aug. 19. 18:11
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Köszönöm szépen a válaszod !
2013. aug. 20. 13:16

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!