|
01. 02. 2006. | #1 |
Goran Pilipović
Sir Write-a-Lot
|
Generisanje random UNIQUE kodova
Script treba da generiše 2 miliona kodova. Svi moraju biti unique, svi imaju dužinu od 8 karaktera, koriste se samo mala slova i cifre, ne smeju da budu u bilo kakvom redosledu. Znači, primer jednog koda je: a39sdk2b
Sve to može da se generiše u lokalu, ne mora ništa real time, sada razmišljam kako da uradim to najbrže. Sam PHP kod nije problem, jedini mi je mali "problem" kako da budem siguran da nema duplikata. Moja ideja je da napravim jednu mysql tabelu koja će imati samo jednu kolonu koja je definisana kao primary key. Na primer ovako: PHP kôd:
Da li neko može da se seti nekog bržeg ili jednostavnijeg rešenja? Ne mora čak da bude ni PHP, može i iz Windows Paint ako treba
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
01. 02. 2006. | #2 |
Knowledge base
Wrote a book
Datum učlanjenja: 16.06.2005
Lokacija: Novi Sad
Poruke: 1.437
Hvala: 37
131 "Hvala" u 82 poruka
|
Uvek moze brze
Napravi petlju koja generise te kodove, ali rezultate smesti u memoriju, u niz.. Pa tek onda sruci sav array u bazu
__________________
Năo quero mais seguir um só caminho |
02. 02. 2006. | #3 |
Goran Pilipović
Sir Write-a-Lot
|
I ako ima duplikata moram da prebrojim koliko je stvarno upisano, pa onda da generisem ponovo ostatak i tako dok ne popunim svih 2 miliona? Imao sam ideju da to uradim jednim izvrsenjem scripta
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
02. 02. 2006. | #4 |
Dejan Katašić
Wrote a book
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
|
http://www.php.net/in_array
jedan niz, jedna petlja, jedan random generator, jedan brojač koji se povećava kad nova vrednost već nije u nizu samo isključi time limit, nemam predstavu koliko to može da traje // eh, da - koji jezik je u pitanju? |
02. 02. 2006. | #5 | |
profesionalac
Professional
|
Citat:
|
|
02. 02. 2006. | #6 |
Knowledge base
Wrote a book
Datum učlanjenja: 16.06.2005
Lokacija: Novi Sad
Poruke: 1.437
Hvala: 37
131 "Hvala" u 82 poruka
|
Da, napravis petlju koja generise unique i proverava da li vec postoji u nizu, ako NE postoji, povecas counter...
Nesto kao do { $broj=generisi_broj(); if (!in_array($broj, $niz)) { $counter++; $niz[] = $broj;} } while ($counter<2000000); Ovo je odoka.. Valjda radi..
__________________
Năo quero mais seguir um só caminho Poslednja izmena od MorenoArdohain : 02. 02. 2006. u 00:33. |
02. 02. 2006. | #7 | |
Knowledge base
Wrote a book
Datum učlanjenja: 07.06.2005
Lokacija: Neđe ođe...
Poruke: 1.197
Hvala: 339
688 "Hvala" u 178 poruka
|
Citat:
__________________
Чак Норис може да си ги врзе врвките на чевлите со стапалата. |
|
02. 02. 2006. | #8 |
Python Ambassador
Master
|
Najbrže? Najbolje?
1. Pa, za početak ključ od 8 karaktera je u stvari heksadecimalan prikaz 32-bitnog neoznačenog broja. 2. Tako kodiran ključ ima šansu pogotka od 1:2147,483648. 3. Za generisanje samih 32-bitnih brojeva iskoristi specijalizovani softver za numeričke proračune tipa MATLAB. Mislim da se u MATLAB-u da jednostavno napisati funkcija (tj, ako već ne postoji) za generisanje vektora jedinstvenih pseudo-slučajnih brojeva Paranoik si i ne veruješ pseudo-slučajnim brojevima? Poveži mikrofon na ulaz zvučne kartice, meri beli šum i koristi njegovu numeričku reprezentaciju kao slučajni broj. Takođe povećaj širinu broja na 64 bita i uradi konverziju bajt u karakter koda po svom ukusu. A onda, možda ipak ja samo previše teoretišem pred ispit iz Numerike
__________________
Python Ambassador of Serbia |
02. 02. 2006. | #9 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Preterujete. Rešenje koje je bluesman predložio je jednostavno, da se brzo napraviti i odradiće posao dok si rekao piksla.
1 x PK ili UNIQUE kolona 1 x brojač 1 x while loop 1 x generator koda Zbućkati, izvršiti i to je to. Pre ili kasnije ćeš morati podatke insertovati tako da baratanje nizom vidim kao suvišan korak. Nije neka ušteda, a pošto se radi samo jednom stvarno ne vidim zašto bismo pravili toliku nauku. Edit: moja greška. Pomislio sam da su podaci potrebni u bazi, ne u drugom (bilo kom) obliku.
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 02. 02. 2006. u 00:46. |
02. 02. 2006. | #10 |
Goran Pilipović
Sir Write-a-Lot
|
Petre, idi odspavaj malo
Ja ipak ne bih da smeštam 2 miliona kodova u memoriju pa onda da čuvam u file, to će potrajati i ako pukne, moram ponovo... nesigurno je.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
random + mysql | mega023 | PHP | 9 | 09. 03. 2010. 17:08 |
random select na velikoj tabeli | kodi | SQL baze podataka - Sponzor: Baze-Podataka.net | 14 | 09. 04. 2008. 13:46 |
random koji favorizuje | kodi | Programiranje | 16 | 29. 04. 2007. 22:09 |
java.util.Random security | Ivan | Programiranje | 0 | 02. 01. 2007. 19:43 |
Random image - preraditi za flash... | headcutter | (X)HTML, JavaScript, DHTML, XML, CSS | 4 | 02. 09. 2005. 23:14 |