Van egy veletlen generalt szamsorom, hogy tudom megoldani hogy ami az adatbazisban szerepel?
Az lenne a feladat hogy generalas pillanataban mar nem egyezhet meg a ket szam amit generalok.
Tehat nincs lehetosegem osszehasonlitani es ha false akkor ujra fut... php es mysql
"Emellett tömbben nem is csak egész számokat lehet tárolni."
Sehol nem állítottam az ellenkezőjét.
"Igen a sorszam egyedi azonosito lenne"
Ez esetben kétséges, hogy sorszámnak hívható, mint utaltam már rá korábban.
Pár éve csináltam már e-mail megerősítő link küldő rendszert, ahol automatikusan kap emailre egy linket (miután kitöltötte az illető az űrlapot). A link megfelelő része randomgenrált és mindig különbözik mint ami már volt valaha. Az openssl random generátor php-ből generált egy random stringet melyet átalakírottam hogy kompatibilis legyen a linkhez, mely link mögött egy php kód végezte a dolgát, paraméterbe volt megadva a random érték az adott linkbe. Adatbázis szinten ugye lehet olyan oszlop vagy több is ahol csak egyedi értékek lehetnek. Csak annyit csináltam igazából, hogy csak azt ellenőriztem, hogy sikeres e az INSERT INTO. Olyan nagy tartományon generáltam, hogy még 1 millió év alatt is valószínűtlen az ütközés, sőt az univerzum eddigi teljes ideje alatt is, gyakorlatilag mondhatni lehetetlen. Azt még meg lehetett volna csinálni, hogy ugye ha nem sikerült akkor megnézi, hogy ütközés van e, ha ütközés van akkor újra generálja. Határidő kötött, kérték hogy működjön, ilyenekkel ami gyakorlatilag sose kell azt nem raktam bele, úgy is hibaüzenetet raktam bele ha megtadta a műveletet a szerver. Ami vagy akkor lenne, ha az adatbázisba 2x ott egyforma érték került volna bele ugye mint mondtam az UNIQUE vagy a PRIMARY KEY adatbázisszinten visszautasítja, vagy egyéb más ok miatt. Egy 128 bitesen generált random összes lehetséges állapotának száma az sok sok trilliószor több mint 13 milliárd év másodpercben.
Egyébként meg nem értem, hogy miért ne lenne lehetőséged újragenerálni. (Azt az openssl-es randomgenerátort szeretem ilyesmihez, meg security szempontból nem véletlen van ez.) Berakja, ellenőrzi hogy sikerült e a művelet, ha nem megnézi,hogy létezik e már ilyen, ha igen akkor megismétli. Észre se venné a felhasználó ekkor sem. Ha a generálási tartomány lényegesen nagyobb mint reálisan előforduló rekord darabszám akkor sose vagy nagyon ritkán kell újra megismételni. Különben meg már említettem azt a megoldást is hogy sose lenne ütközés egyből matematikailag bizonyíthatóan külön bármiféle egyezőségvizsgálat nélkül, de az igazából indokolatlan lenne erre, ahhoz az egészet be kell rántani egy tömbbe hozzá. Még ilyen pontos idővel is trükközhetsz hozzá hogy azt is belekevered, hogy akkor még abban a másodpercben kéne pont véletlenül ugyanannak kijönni a randomnak, ha már 1 másodpercel több a gép órája akkor már elvi lehetősége sincs egyezni.
Probaltam ugy hogy feltoltottem random 100ezer "szamlaszamot"
Es akkor az uj generalasanal elegge gondolkozott a rendszer... ezert is szeretnem megoldani ugy hogy letezhet e arra megoldas hogy vegig olyan adatot kapjak ami meg soha nem volt hasonlitas nelkul
Bocs az illúziórombolásért, de a lényegét tekintve az is azt csinálja amit már írtam, összességében még így se lenne rövidebb az akkori kódom ha erre módosítanám.
Olyan kicsi valószínűségre csökken hogy ugyanaz jöjjön ki, hogy gyakorlatban nagyon esélytelen hogy elő fog fordulni. Matematikai precizitással nem garantálja.
Részletek : [link]
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!