[Pillola] Generare numeri casuali in C/C++ - Pag 2
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Pag 2 di 2 PrimoPrimo 12
Visualizzazione risultati da 16 a 25 di 25

Discussione: [Pillola] Generare numeri casuali in C/C++

Cambio titolo
  1. #16
    Utente L'avatar di IWBY
    Registrato il
    10-02
    Località
    Italia
    Messaggi
    715
    Inviato da Yubei
    1) a che gli serve i a srand????
    2)Quanto vale RAND_MAX??

    t
    1) srand() serve ad inizializzare ad un valore la funzione rand(). infatti se nn lo si inizializza, i valori ottenuti saranno sempre gli stessi...
    2) RAND_MAX è una costante che definisci tu... nn è stabilito precedentemente...

    cmq dove trovi le funzioni randomize() e random(int n)? in ke libreria?
    Morte alle consolles e ai loro giochi schifosi che arrivano su pc!


  2. #17
    Ex ***** VIPz Estathé L'avatar di nicjedi
    Registrato il
    12-02
    Località
    non vivo
    Messaggi
    16.158
    piccolo esempio preso dall'msdn:

    Example
    /* RAND.C: This program seeds the random-number generator
    * with the time, then displays 10 random integers.
    */

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>

    void main( void )
    {
    int i;

    /* Seed the random-number generator with current time so that
    * the numbers will be different every time we run.
    */
    srand( (unsigned)time( NULL ) );

    /* Display 10 numbers. */
    for( i = 0; i < 10;i++ )
    printf( " %6d\n", rand() );
    }

    Ciao

    Nicola
    "La violenza è l'ultimo rifugio degli incapaci"
    "Non lasciare mai che la morale ti impedisca di fare la cosa giusta"
    "La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta."
    "fare molte cose alla volta significa non farne bene nessuna"


  3. #18
    Utente
    Registrato il
    10-02
    Messaggi
    2.367
    cmq dove trovi le funzioni randomize() e random(int n)? in ke libreria?

    Ancora molto ma molto tempo fa, quando usavo il borland su windows, usavo quelle funzioni.

    In linux non esistono, almeno con quei nomi.............

  4. #19
    Utente
    Registrato il
    12-02
    Località
    Venezia
    Messaggi
    110
    IWBY
    2) RAND_MAX è una costante che definisci tu... nn è stabilito precedentemente...
    Ma per carita'. RAND_MAX e' una macro standard definita in stdlib.h .

    Comunque Yubei, puoi trovare informazioni su queste funzioni con
    Codice:
    $ man rand
    $ info libc 'Mathematics' 'Pseudo-Random Numbers' 'ISO Random'
    L'ultimo funziona sotto RH. Altre distribuzioni potrebbero avere un diverso percorso.
    man is your friend

  5. #20
    Utente L'avatar di IWBY
    Registrato il
    10-02
    Località
    Italia
    Messaggi
    715
    Inviato da 3y34|v|31337
    [B]Ma per carita'. RAND_MAX e' una macro standard definita in stdlib.h .
    azz, è vero... è da un pò ke nn uso il c... cmq, mi pare ke fosse pari alla misura massima di un int... se nn sbaglio... dovrebbe essere quindi 32617, o un numero simile... nn ricordo bene quella parte...
    Morte alle consolles e ai loro giochi schifosi che arrivano su pc!


  6. #21
    Utente L'avatar di Nordheim
    Registrato il
    05-05
    Località
    Bergamo
    Messaggi
    9
    Questo ti genera numeri casuali senza ripetizione

    #include <iostream.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <math.h>
    const N=10000;
    void main()
    {
    int A[N],n,x;
    clrscr();

    do
    {
    cout<<"Quanti numeri genero?"<<endl;
    cin>>n;
    } while(n>N || n<1);
    cout<<endl;
    for(int i=0;i<N;i++)
    A[i]=i+1;
    for(i=0;i<n;i++)
    {
    x=random(N-i);
    cout<<A[x]<<" ";
    A[x]=A[N-1-i];
    A[N-1-i]=x;
    }
    getch();
    }

  7. #22
    Utente GNU/Linux
    Registrato il
    10-02
    Località
    Roma
    Messaggi
    3.246
    Questo è un codice in ANSI C che ho scritto per generare un numero casuale, intero, in un intervallo a scelta:
    Codice:
    #include <stdio.h>
    #include <stdlib.h>
    /*#include <unistd.h>*/
    #include <time.h>
    
    int main(void){
    
            int M,m;
    
            printf("Questo programma genera un numero intero pseudo-casuale in un intervallo scelto.\n(estremi compresi)\n\nInserisci l'estremo inferiore dell'intervallo: ");
            scanf("%d",&m);
            printf("Inserisci l'estremo superiore: ");
            scanf("%d",&M);
            if(M<=m){
                    printf("Hai visto bene che razza di estremi mi hai dato? °è_è\n");
                    return 2;
            }
    /*      printf("Rullo di tamburi...\n");
            sleep(3);*/
            srand((unsigned int)time(NULL));
            printf("... %d !\n",(int)(((double)rand()/(RAND_MAX+1.0))*(double)((M+1)-m))+m);
    
            return 0;
    }
    Citazione IWBY
    raga, la funzione rand() inizializzata con srand(time(0)) è una possibile soluzione... però è troppo condizionata dai secondi correnti. nn so se mi spiego. ad esempio se uno deve effettuare delle estrazioni casuali, nello stesso istante... gli uscirà lo stesso numero per ogni estrazione: questo perchè srand(time(0)) se nn sbaglio inizializza rand() al secondo corrente e quindi se le estrazioni (supponiamo 3 estrazioni) sono effettuate nello stesso istante, è chiaro che verrà estratto lo stesso numero! [...]
    Forse non ho capito, ma se ho capito non è così; srand() decide solo l'ordine in cui usciranno i numeri nella distribuzione uniforme di rand(), quindi se dopo aver usato srand() una volta viene eseguita la funzione rand() mille volte in un miliardesimo di secondo (o un intervallo di tempo piccolo a piacere), usciranno mille numeri diversi.

  8. #23
    (un po' meno) cattivo L'avatar di L33T
    Registrato il
    10-02
    Località
    Ovunque e in nessun luogo
    Messaggi
    3.908
    E' abbastanza ovvio e in questo caso non serve, ma visto che è una pillola lo preciso comunque.

    I numeri generati con le procedure postate fino ad ora non sono crittograficamente sicuri. Data una quantità sufficiente di numeri è cioè possibile stabilire quale relazione hanno e prevedere i successivi.

    Per applicazioni che richiedano sicurezza è preferibile utilizzare uno pseudo-random number generator specifico (quello di CryptoApi, ad esempio), anche se ovviamente nemmeno questo dà garanzie assolute.
    Es ist nichts schrecklicher als eine tätige Unwissenheit.

  9. #24
    Utente L'avatar di Phoenix
    Registrato il
    10-02
    Località
    Midwich Street
    Messaggi
    6.699
    Citazione L33T
    ...anche se ovviamente nemmeno questo dà garanzie assolute.
    Crittografia quantistica rulez


    He who is not bold enough to be stared at from across the abyss
    is not bold enough to stare into it himself.

  10. #25
    Utente
    Registrato il
    06-05
    Messaggi
    1
    Ciao,
    in tema di numeri generati casualmente, io ho un vero problema. Devo generare dei numeri casuali con una distribuzione normale, in altri linguaggi esiste randn() o qualcosa del genere, in c++ non sono riuscito a trovare niente.
    Ora sto sperimantando varie soluzioni, ma mi sa che sono arrivato ad un punto critico, produco il risultato consumando moltissima memoria e tempo, ed è proprio quello che volevo evitare.
    ciao

Pag 2 di 2 PrimoPrimo 12

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •