Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2019
    Messaggi
    1

    [C] Generare numeri casuali diversi a ogni chiamata della funzione rand()

    Buonasera, sto scrivendo un piccolo programma in cui ho la necessità di avere più volte un numero casuale diverso, quando chiamo la funzione per il numero casuale [srand((unsigned) time(NULL)); return rand() % 6;] è vero, ricevo un numero casuale ma poi quando richiamo la funzione per un altro numero e sempre lo stesso per tutta l'esecuzione del programma.
    Come posso ricevere un numero casuale diverso ogni volta che richiamo la funzione in cui ho messo srand e rand?
    Grazie in anticipo

  2. #2
    https://forum.html.it/forum/showthre...readid=2915912

    srand reinizializza il generatore di numeri casuali con il seed che gli passi, e con time(NULL) lo inizializzi alla data+ora corrente (con precisione dl secondo). Se tu chiami sempre srand(time(NULL)) prima di chiamare rand(), tutti i numeri generati nello stesso secondo saranno uguali (visto che lo reinizializzi ad ogni chiamata).

    Il punto quindi è: srand(time(NULL)) va richiamato una sola volta, all'inizio del programma, per inizializzare l'RNG (altrimenti tutte le esecuzioni del programma produrrebbero la stessa sequenza di numeri casuali), mentre quando vuoi un numero casuale ti basta chiamare rand() senza chiamare di nuovo srand.
    Amaro C++, il gusto pieno dell'undefined behavior.

Tag per questa discussione

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