Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [C++] generatore numeri casuale

    Salve,

    avrei bisogno di creare una piccola funziona che mi ritorna un numero casuale nel range:

    1.000.000 > 9.999.999
    l'unico modo che conosco per creare numeri a caso è: srand(time(0)); e poi rand().

    Io avrei bisogno che anche chiamando la funzione 100 volte in un secondo mi restituisca ogni volta un valore unico!

    grazie
    Alla batteria dai retta ballA

  2. #2
    srand(time(NULL)); va richiamata solo all'inizio del programma, poi devi chiamare solo la rand, che ogni volta ti restituirà un numero casuale diverso...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    16
    Originariamente inviato da MItaly
    srand(time(NULL)); va richiamata solo all'inizio del programma, poi devi chiamare solo la rand, che ogni volta ti restituirà un numero casuale diverso...
    Io non ne sarei tanto sicuro della tua risposta, perchè c'è la possibilità che si ripresenti un numero già uscito!
    Se non ho capito male, chiede che sia unico cioè che non debbano esserci ripetizioni di numeri già usciti. Sbaglio o no?

  4. #4
    esatto, stavo pensando di salvare il numero uscito in un vector così potro fare comparazioni in seguito per fare in modo di generare un'altro numero se già presente nel vector
    Alla batteria dai retta ballA

  5. #5
    Originariamente inviato da Lawliet
    Io non ne sarei tanto sicuro della tua risposta, perchè c'è la possibilità che si ripresenti un numero già uscito!
    Se non ho capito male, chiede che sia unico cioè che non debbano esserci ripetizioni di numeri già usciti. Sbaglio o no?
    Questo è vero, ma avevo capito che il problema era un altro (tutti i numeri casuali generati nello stesso secondo sono uguali, problema tipico di quando si richiama sempre srand(time(NULL)) prima di rand).
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Mi viene il dubbio se questo indice serva a prelevare dalla mappa un buffer univoco per thread.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  7. #7
    Alla batteria dai retta ballA

  8. #8
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da gianvituzzi
    Lo prendo per un si?

    GetCurrentThreadId() restituisce un DWORD contenente l'ID del thread corrente (che per definiziomne è univoco).
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  9. #9
    perfetto...posso lasciare perdere la questione di come generare un numero univoco!
    Alla batteria dai retta ballA

  10. #10
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Frena l'entusiasmo. Se utilizzi quella funzione, dovrai avere un singolo buffer per ogni singolo thread. Se hai trenta thread, dovrai fornire trenta buffer diversi e rinunciare al buffer circolare.
    Non so se è questo quel che vuoi esattamente.
    In pratica avrai ottenuto un thread local storage.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

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.