Autor | Zpráva | ||
---|---|---|---|
robbie Profil * |
#1 · Zasláno: 4. 10. 2014, 19:29:29
Naznačí nekdo prosím, jak v javascriptu udelat např generátor tří čísel od 0-100. Zajímá me jak to udelat, aniž by se žádné číslo neopakovalo. Děkuji moc nebo za poslaný odkaz, kde se to řešilo. Děkuji
|
||
Joker Profil |
robbie:
Udělal bych si celou tu číselnou řadu jako pole, tj. nějak var rada = []; for (var i = od; i <= do; i++) rada.push(i);
A potom stačí (kolik čísel chci)-krát opakovat: Najdu si náhodné číslo od 0 do (rada.length - 1). To číslo je index v poli rada a hodnota z pole je požadované náhodné číslo. A zároveň ten vybraný prvek odstraním z pole. Tady se šikne metoda Array.splice, která umí odstranit prvek z pole a zároveň ho vrátit- tj. vše potřebné v jedné metodě. Doplnění, kdyby se to dělalo tak obecně jak jsem naznačil a velikost řady a počet náhodných čísel byly nastavitelné, nebude to samozřejmě fungovat ve chvíli, kdy počet vybíraných čísel bude větší, než rozsah řady. |
||
Radek9 Profil |
Joker:
Opravdu myslíš, že je dobrý nápad generovat celočíselnou řadu jako pole? Co kdyby potom někdo chtěl generovat číslo od 1 do 1 000 000? To už zabere poměrně dost času. Asi bych prostě vygeneroval náhodné číslo v tom rozsahu a pokud není v poli, uložil bych ho. A takto do chvíle, dokud nemám potřebný počet čísel. |
||
Joker Profil |
#4 · Zasláno: 4. 10. 2014, 20:54:23
Radek9:
„Co kdyby potom někdo chtěl generovat číslo od 1 do 1 000 000?“ Ani tak by to nezpůsobilo velký problém, deset milionů prvků mi trvalo asi 4 sekundy. Ale záleží samozřejmě na poměru počtu vybíraných čísel k velikosti řady. Kdybych chtěl tři různá čísla z milionu, prostě bych vygeneroval náhodné číslo, porovnal s těmi co už mám, kdyby bylo jiné ho přidal a to opakoval tak dlouho, dokud nebudu mít tři čísla. Pro tři čísla ze sta to bude fungovat taky, ale tahle metoda má zase problém ve chvíli, kdy počet vybíraných čísel je významná část toho intervalu. |
||
Bubák Profil |
Skript, který funguje, jak popissuje Radek9, je třebas tento:
http://kod.djpw.cz/ocgb http://kod.djpw.cz/ocgb- Kód je z jedné dost staré knihy, je skoro jisté, že to lze napsat lépe. robbie: Teď máš dva různé algoritmy a musíš si vybrat, předpokládám, že to zvládneš. |
||
robbie Profil * |
#6 · Zasláno: 5. 10. 2014, 01:31:54
První 4 řádky a poslední dva chápu, jinak se v tom topím, pomúže nekdo vysvetlit? Děkuji
http://kod.djpw.cz/ocgb |
||
juriad Profil |
#7 · Zasláno: 5. 10. 2014, 02:20:14
Já bych to napsat takto: http://kod.djpw.cz/wcgb
Snad je to přehlednější. Pokud máš nějakou ucelenou funkcionalitu, zabal ji do funkce. |
||
Chamurappi Profil |
#8 · Zasláno: 5. 10. 2014, 03:46:38
Reaguji na juriada:
Jen podotknu, že indexOf na poli nepodporují starší prohlížeče.
|
||
juriad Profil |
#9 · Zasláno: 5. 10. 2014, 04:24:31
Hups, už zase. Proč si pořád myslím, že indexOf je všude a lastIndexOf není? Že si to s něčím pletu.
Upraveno: http://kod.djpw.cz/xcgb |
||
Časová prodleva: 10 let
|
0