Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    numeri casuali usando dev/random in c

    ho trovato questo piccolo esempio, ma non capisco bene come fare a generare dei numeri in un certo range (0-255), posso usare dev/random urandom con srand per il seeder e generare i numeri usando rand()%numero?

    esempio:

    #include <stdio.h>
    //#include <stdlib.h>
    #include <fcntl.h>
    #include <time.h>
    //#include <math.h>
    main (void) {
    int randnum;
    int fd = open ("/dev/urandom", O_RDONLY);

    if (fd != -1) {
    read( fd, &randnum, 4 );
    randnum = abs( randnum ); /* If you only want positive values */
    printf("Random number : %d\n",randnum);
    close(fd);
    } else {
    /* Please don't do this if you need cryptographic security! */
    randnum = time(NULL) + getpid(); // + other weird stuff;
    }
    //seed_the_rng_function(randnum);
    system("pause");
    }

  2. #2
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Sposto su Programmazione

  3. #3
    scusa ma non sapevo se mettere su linux perchè dev/random si usa su linux

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ma il tuo problema è solo quello di generare un numero casuale compreso fra 0 e 255? Se è così, perchè complicarsi la vita:
    codice:
    #include <stdio.h>
    
    int main() {
       int numero;
       srand(time(NULL));
       numero = rand() % 256;
       printf("Numero generato: %d", numero);
    
       return 0;
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    lo so, ma il problema è che vorrei generare dei numeri casuali che siano veramente molto casuali, devo usarlo in un piccolo programmino di crittografia che usa l'exor... (One Time Pad)
    e per generare una chiave buona pensavo di utilizzare dev/random o dev/urandom per il momento ho creato questa

    funzione:
    codice:
    int randomseed(void){
             int randnum;
             int fd = open("/dev/urandom", O_RDONLY);
             if (fd != -1) {
                read(fd,&randnum,4);
                randnum = abs(randnum);   
             }
             close(fd);
             return randnum; 
    }
    poi uso srand(randomseed());
    e poi genero i numeri come dicevi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.