Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    rand() in genere è semplicemente un LCG (l'algoritmo sopra descritto da scara95), in cui il seed (ovvero, il numero di partenza con cui viene inizializzato l'algoritmo) viene impostato tramite srand (in genere a partire dall'ora corrente o da altri dati sempre diversi ad ogni avvio del programma).

    Giusto per rendere l'idea, lo stesso standard C fornisce un'implementazione di esempio, che come si vede è semplicissima:
    codice:
    static unsigned long int next = 1;
    int rand(void)        // RAND_MAX assumed to be 32767
    {
        next = next * 1103515245 + 12345;
        return (unsigned int)(next/65536) % 32768;
    }
    
    void srand(unsigned int seed)
    {
        next = seed;
    }
    Nota comunque che esiste di molto meglio, sia in termini di generatori di numeri pseudo-casuali (ad esempio, il Mersenne Twister è uno dei generatori "di alta qualità" più diffusi) che di sorgenti di entropia (sotto Linux ad esempio /dev/random fornisce piccole quantità di byte casuali ottenuti da varie sorgenti di entropia da usare come seed per PRNG).
    Ultima modifica di MItaly; 09-04-2016 a 01:36
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.