Miten luoda id

Eli tietääkö joku helppoa tapaa luoda int tyyppinen id- numero string- merkkijonon perusteella.
Esim merkkijonoja:
"12.1.2009_myynti_autot_pyyhkijänsulat_10€"
"12.1.2009_myynti_autot_etupolttimo_4€"
"13.1.2009_osto_autot_moottoriöljy_1000€"
jne.
id:n pitäisi generoitua jokaiselle, kun tietoja voi olla esim. 100000kpl. Sattumalta sama id tulisi vasta kun liikuttaisiin tietokannassa miljoonissa riveissä. Mites sakandimerkit, vaikuttaisivatko ne mitenkään, jos liikuttaisiin vain windows- ympäristössä ja käytössä on vaikka vietnaminkielinen windows xp?
Id tulisi tietokantaan, johon lisätään tietoja.
3525
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Kuullostaa siltä, että yrität keksiä pyörää uudelleen. Mitä oikein yrität tehdä loppujen lopuksi?

Vaikuttaa siltä että saattaisit olla etsimässä tiivistettä (checksum, hash, digest, yms.). Näitä on esim. CRC, MD5, SHA1, SHA256, yms. CRC32 palauttaa 32-bittisen luvun, MD5 128-bittisen, SHA1 160-bittisen yms. Luku voidaan esittää desimaalisena, tosin usein käytetään heksadesimaalista esitystapaa, kuten "5a532bc12f1103525ea6442ab4211cca".

On huomattavaa, että 50% todennäköisyydellä törmäys 32-bittisiä lukuja (int) käytettäessä on n. 77000 "id:n" kohdalla. 1% todennäköisyys jo n. 9300:lla!

Jos luku on etumerkillinen, ja käytetään vain positiivisia arvoja, 50% todennäköisyys ainakin yhteen törmäykseen on 54000:lla id:llä.

Äänestä

int get_id(void)
{
static int id = 0;
return id;
}

Äänestä

k = kerroin = jotain = 31
h = hash = 0

for c in str:
h = h*k + c
return h % maks

Äänestä

Kommentoi aloitusta


------------ kirjoitti:

Eli tietääkö joku helppoa tapaa luoda int tyyppinen id- numero string- merkkijonon perusteella.
Esim merkkijonoja:
"12.1.2009_myynti_autot_pyyhkijänsulat_10€"
"12.1.2009_myynti_autot_etupolttimo_4€"
"13.1.2009_osto_autot_moottoriöljy_1000€"
jne.
id:n pitäisi generoitua jokaiselle, kun tietoja voi olla esim. 100000kpl. Sattumalta sama id tulisi vasta kun liikuttaisiin tietokannassa miljoonissa riveissä. Mites sakandimerkit, vaikuttaisivatko ne mitenkään, jos liikuttaisiin vain windows- ympäristössä ja käytössä on vaikka vietnaminkielinen windows xp?
Id tulisi tietokantaan, johon lisätään tietoja.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu