Tömb összefűzés véletlen sorrendben.
Üdv!
Abban kérem a segítségeteket hogyan lehetne egy tömböt más tömbökkel feltölteni véletlenszerű sorrendben.
A tomb.concat az ok, a véletlen sorrend a probléma. A feltöltés után összekeverni az most nem jó.
Köszi a segítséget.
■ Abban kérem a segítségeteket hogyan lehetne egy tömböt más tömbökkel feltölteni véletlenszerű sorrendben.
A tomb.concat az ok, a véletlen sorrend a probléma. A feltöltés után összekeverni az most nem jó.
Köszi a segítséget.
Random
Rossz ötlet
http://www.robweir.com/blog/2010/02/microsoft-random-browser-ballot.html
Helytelen
parseInt
miatt valószínűbb lesz, hogy aj
közelebb fog állni0
-hoz minti - 1
-hez (és egyébként sem használunkparseInt
-et kerekítéshez).A fenti példámnak nem is az volt a célja, hogy helyes megoldást szolgáltasson, hanem, hogy elindulhasson valamerre a kérdező.
Milyen lesz az eloszlás? Én
Azt ugye érzed, hogy az elég furcsa érvelés egy rossz javaslat megvédésére, hogy nem is akartál helyes megoldást mutatni. :)
Eloszlás
Azt ugye érzed, hogy az elég
Teljesen jó válasz?
Ez elég viccesen hangzik. Anélkül, hogy bántanék bárkit, mondjuk inkább úgy, hogy teljesen rossz választ adott. Ezzel nem akarok senkit megsérteni, természetes, hogy hibázunk. Sőt, a random shuffle-re ez egy elsőre rövid, elegáns és vonzó megoldásnak tűnik.
Hogy miért állítom, hogy a válasz teljesen rossz:
1. Hibás, mert nem egyenletes eloszlást generál, lásd a korábban linkelt cikket.
2. Lassú, mert rendezés van benne, ami O(n * log n) futási idejű, holott a random shuffle könnyen megoldható az elméleti minimum O(n) időben is.
3. Megsérti az Array sort függvény contract-ját, miszerint olyan összehasonlító függvényt kellene használni, ami konzisztens, tehát ugyanolyan bemenetekre mindig ugyanolyan kimenetet ad.
Egy fórumon, ahol minőségi válaszokat várunk, ott szerintem nem jó, ha a láthatóan tapasztalatlan kérdezőt rávezetjük egy koncepciójában és implementációjában is rossz irányra.
Az, hogy mi a minőségi
Bár az általad adott link, valamint a fenti magyarázatod technológiailag megállja helyét, és a te szinteden álló embereknek ezt kell adni, jelen esetben a kérdező szemmel láthatólag kezdő. Emiatt szerintem sokkal jobb a Poetro-féle rávezetés, valamint annak az ösztönzése, hogy jöjjön tisztába az alapokkal, utána ráér finomítani, mert számára jelenleg irreleváns, hogy a Microsoftnál nem tudnak programozni.
Emiatt inkább a te válaszod hibás a jelen esetben, ráadásul az általad linkelt oldalon kezdőknek nem egyértelmű (ha megértik a hosszas elemzést), hogyan tudnák beépíteni az algoritmust a saját oldalukba.
A magam részéről viszont köszönöm, hogy rávilágítottál a véletlenszámgenerátor hibájára, be is tettem az oldalt a kedvencek közé.
+1
Szerintem jó, hogy Poetro válaszolt és az is jó, hogy "javítva lett".
Mindkét hozzászólás teljesen pozitív és -- mondhatom -- elvárt egy ilyen fórumon.
:-)
Nem tudjuk meggyőzni egymást
Te nem fogadod el, hogy didaktikailag helytelen egy koncepcionálisan rossz válasz, és egyáltalán nem jó ötlet egy kezdőt rossz irányba terelni.
Én pedig nem fogadom el azt az állításodat, hogy szerinted teljesen jó dolog egy magyarázat (vagy hivatkozások) nélküli, elvi hibákat tartalmazó válasz, mert azzal egy kezdő igenis jól fog járni, és milyen jó lesz a világnak.
Az valóban teljesen irreleváns, hogy a Microsoftnál hogy tudnak programozni. A mellékelt cikknek ugyan ez az aprópója, de a cikk tartalma ettől a kontextustól függetlenül állja meg a helyét, és ettől a kontextustól függetlenül linkeltem be. Ha valamiért MS hatert vagy fanboyt látsz bennem, akkor biztosan állíthatom, hogy tévedsz.
Valóban máshogy látjuk a
Az utolsó bekezdéshez viszont hozzátenném, hogy nem gondoltam egyáltalán, hogy bajod lenne a Microsofttal, hasonló hibákat a többi szoftvergyártó/programozó is elkövet.
+1
Szigorúan véve ez nem igaz, a
A gyakrolatban nyilván az az egyenletestől való 2^-53 nagyságrendű eltérésnek nincs jelentősége, meg nem is lehet kiküszöbölni... de ha már vitatkoztatok róla.
pontosítok
tomb1 = [ ["első fele",2],
["második fele",3]];
tomb2 = [ ["első része",4],
["második része",5],
["harmadik része",6]];
tomb=tomb.concat(tomb1); //itt kellene véletlennek lennie
document.writeln(tomb);
Ilyet szeretnék készíteni. A tomb feltöltése tomb1 és tomb2 mezővel véletlen legyen. Egyébként sokkal több tömb van. tomb1, tomb2, ... tömb20.
A shuffle azért nem jó mert az egymáshoz kapcsolódó tömbelemek elkeverednek.
A tömb1-ben, a tömb2-ben stb. muszály hogy egymás után maradjanak az elemek.
Remélem érthető voltam.
Tömbök tömbje
Ezt nem értem :( "A külső
"A külső tömbön hajtasz végre shuffle műveletet, tehát a belső tömböket kevered. De egy adott belső tömbön belül már nem."
A tomb1 ... tömb20 elemei saját magukon belül nem keveredhetnek. Ezek sorrendje adott. Egész tömböket kellene véletlenszerűen egyesíteni.
Így?
majdnem
A tomb1 ... tömb20 csak ezek sorrendjét kellene keverni az egyes tömbök elemeinek változatlannak kellene maradni. A tomb1 elemeinek meg a többinek is ugyanabban a sorrendben kellene maradnia.
vázlat
ok
Köszi