Funzioni random

di il
3 risposte

Funzioni random

Salve a tutti!
Non ho ben capito il metodo seed che fa parte delle funzioni random, o meglio l'ho capito solo in parte. Credo (correggetemi se sbaglio) sia un metodo per "controllare" le generazione di numeri casuali. Non ho ben capito però la differenza nello scrivere:
random.seed(0)
random.seed(4)
random.seed(23)
random.seed(184)
Il valore che passiamo mi pare di aver capito che sia un punto di partenza nell'algoritmo di generazione di numeri random, ma concettualmente come funziona? Cosa cambia nello scrivere 0 piuttosto che 4 o 23 o 184 a livello concettuale?
Grazie anticipatamente.

3 Risposte

  • Re: Funzioni random

    La generazione dei numeri casuali è una grossa rogna sin dagli albori dell'informatica.
    La funzione seed serve per inizializzare la sequenza dei numeri casuali, e a seconda della finezza dell'algoritmo, a seme uguale corrisponde sequenza uguale. Un programma non dovrebbe essere rilasciato con un valore di seed fisso, perché a ogni successivo riavvio del programma si otterrebbe sempre la stessa sequenza casuale. Per questo motivo di solito al seed si passa il valore in secondi della data corrente (che è sempre diverso).
  • Re: Funzioni random

    Grazie.
    Quindi diciamo che non c'è da stare a ragionarci troppo su a livello concettuale; sappiamo che se abbiamo un seed fissato, otterremo la stessa sequenza ad ogni run (a questo mi riferivo quando dicevo di "controllare" la generazione). Potresti farmi un esempio in codice (anche banale) di quello che hai detto? ossia di passare al seed il valore in secondi, così da capire come funziona la generazione.
  • Re: Funzioni random

    Secondo la documentazione di seed(), se chiami seed() senza parametri la funzione usa il tempo di sistema.
    Se preferisci, puoi usare:
    from time import time
    import random
    
    random.seed(int(time.time()))
    for i in range(1,20):
        print(random.randint(0,100))
    
Devi accedere o registrarti per scrivere nel forum
3 risposte