Portál AbcLinuxu, 10. května 2025 02:00

Dotaz: Generovani nahodneho cisla

21.4.2010 15:33 Rogue | skóre: 4
Generovani nahodneho cisla
Přečteno: 998×
Odpovědět | Admin
Ahoj mohli by jste mi prosím poradidt, jak použít /dev/random při generování náhodného čísla něják to nechápu jak to použít a potřebuji trochu nakopnout, díky.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.4.2010 15:39 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přečteš jeden byte a hned máš náhodné číslo v intervalu 0 - 255, ne?
21.4.2010 15:48 Rogue | skóre: 4
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Ja spise nechapu jak k tomu pristupovat.
21.4.2010 16:07 luky
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Zalezi podla toho z akeho jazyka. Ale pristupovat budes ako k binarnemu suboru.
21.4.2010 16:13 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
$ python
Python 2.5.5 (r255:77872, Feb  2 2010, 00:25:36) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> ord(open("/dev/random").read(1))
94
>>> ord(open("/dev/random").read(1))
36
>>> ord(open("/dev/random").read(1))
194
...
Vzhledem k tomu, že se jedná o poněkud vzácný zdroj, je možné získaným číslem (integerem, takže 4 nebo 8 bajtů) inicializovat libc generátor "náhodných" čísel funkcí srand(). V C bych s tím pracoval prostě nějak takto:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    unsigned int num = 0;
    FILE *f = fopen("/dev/random", "rb");
    if (f == NULL) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }
    if (fread(&num, sizeof(num), 1, f) != 1) {
        fprintf(stderr, "read failed\n");
        exit(EXIT_FAILURE);
    }
    if (fclose(f) != 0) {
        perror("fclose");
        exit(EXIT_FAILURE);
    }

    printf("Random number from /dev/random: %u\n", num);
    /* inicializace a ukazka pseudo-nahodneho generatoru nahodnych cisel */
    srand(num);
    printf("%d\n", rand());
}
21.4.2010 16:17 Rogue | skóre: 4
Rozbalit Rozbalit vše Re: Generovani nahodneho cisla
Hej moc diky naprosto luxusni vysvetleni fakt diky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.