Generieren eine zufällige 32-bit-hexadezimal-Wert in C

Was wäre der beste Weg zu generieren, die eine zufällige 32-bit-hexadezimal-Wert in C? In meiner aktuellen Umsetzung bin ich generieren jedes bit einzeln aber die Ausgabe ist nicht völlig zufällig ... viele Werte werden mehrfach wiederholt. Ist es besser, zu generieren, die die gesamte Zufallszahl anstelle der Erzeugung jedes bit einzeln?

Den Zufallszahlen nutzen sollte, die gesamten 32 bit-Adressraum (0x00000000, 0xffffffff)

file = fopen(tracefile,"wb"); //create file
for(numberofAddress = 0; numberofAddress<10000; numberofAddress++){ //create 10000 address
    if(numberofAddress!=0)
        fprintf(file,"\n"); //start a new line, but not on the first one

    fprintf(file, "0 ");
    int space;

    for(space = 0; space<8; space++){ //remove any 0 from the left
        hexa_address = rand() % 16;
        if(hexa_address != 0){
            fprintf(file,"%x", hexa_address);
            space++;
            break;
        }
        else if(hexa_address == 0 && space == 7){ //in condition of 00000000
            fprintf(file,"%x", "0");
            space++;
        }
    }

    for(space; space<8; space++){ //continue generating the remaining address
        hexa_address = rand() % 16;
        fprintf(file,"%x", hexa_address);
    }

}
Ihre aktuelle code wird genauso zufällig wie die Erzeugung von einem einzigen 32-bit-Wert mit rand. Zufallszahlen haben sich wiederholende Werte.
Warum nicht einfach rufen Sie einen random number generator? Ich habe vergessen, ob die C ' s rand() liefert eine 64-bit-Menge (oder komplett random 32), aber es gibt andere, die tun. Und was bedeutet "hexadezimal" zu tun haben, mit 32 bit-zahlen?
Kommentar oben geschrieben unter der Annahme, dass RAND_MAX ist max int

InformationsquelleAutor sachin | 2011-10-01

Schreibe einen Kommentar