Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] numeri random

  1. #1

    [C] numeri random

    ho un problema a generare numeri random. Ho una funzione che tutte le volte che chiamata deve usare due numeri casuali interi che genera in un certo range. Il punto e' che se all'interno di questa funzione metto srand((unsigned int)(time(NULL))); come generatore del seme, poiche' il programma e' molto veloce a girare e chiama la funzione in un ciclo for in pratica time(NULL) assume sempre lo stesso valore, e i numeri casuali sono sempre gli stessi. Invece ho bisogno che questi siano tutti diversi appunto in modo casuale (con equiprob). Come faccio?

  2. #2
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Non so se è questo il problema (dovrei vedere il codice) però se lo srand lo metti dentro ad un ciclo for è normale che di a sempre gli stessi numeri.

    Quindi mettilo prima una sola volta

  3. #3
    codice:
    srand (time(NULL));
    for (i=0; i < 10; i++)
    printf ("%u\n", rand ()%10);
    A me' da' sempre numeri diversi...
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  4. #4
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Originariamente inviato da kNemo
    codice:
    srand (time(NULL));
    for (i=0; i < 10; i++)
    printf ("%u\n", rand ()%10);
    A me' da' sempre numeri diversi...
    Quello che ho detto anch'io. Il fatto è che invece se metti lo srand (time(NULL)) dentro il ciclo for

    codice:
    for (ì=0;i<10;i++)
    {
    srand(time(NULL)) ;
    printf ("%u\n",rand()%10) ;
    }
    come ha fatto lui i 9 numeri generati sono uguali...

  5. #5
    questo perche' (secondo me') il ciclo for e' velocissimo e quindi si riferisce sempre agli stessi secondi...

    Se proprio vuoi prova a fare cosi...
    codice:
    #include <dos.h>
    ...
    for (i=0; i<10; i++) {
         srand(time(NULL)) ;
         printf ("%u \n",rand()%10);
         sleep(10);
    }
    ...
    E' Ovviop pero' che cosi' risulta piu' lento...
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

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 © 2024 vBulletin Solutions, Inc. All rights reserved.