cirotto ha chiesto in Matematica e scienzeMatematica · 1 decennio fa

Verifica della distribuzione uniforme?

Ciao a tutti. Sto scrivendo un programma che prenda in un vettore 20000 numeri casuali da 1 a 100. Che calcoli gli devo far fare per verificare che i numeri sono distribuiti uniformemente? Qual'è il metodo più semplice? Grazie e buone feste.

Aggiornamento:

No no.. il mio è un problema matematico.. non m'importa se con la funzione rand i numeri che escono sono sicuramente casuali. Io devo fare comunque la verifica attraverso operazioni aritmetiche.. senza funzioni prestabilite. Diciamo che è un esercizio. Non so.. dovrei forse calcolare la frequenza con cui è uscito ogni numero? mi sembra un po' dispendioso.. grazie comunque per la risposta.

1 risposta

Classificazione
  • Anonimo
    1 decennio fa
    Risposta preferita

    Dipende dal linguaggio che stai usando.

    Molti linguaggi di programmazione oggigiorno hanno già incorporate delle routine per generare numeri pseudo-random già uniformemente distribuiti (in Python c'è random.uniform(), in Java Random.nextInt(), in Perl random_uniform in Math::Random, etc etc); altri linguaggi, come il C, usano dei generatori lineari congruenziali per generare sequenze di numeri pseudo-random distribuiti sul range degli interi (0,2^(32)-1) e che con una buona approssimazione si comportano come numeri distribuiti uniformemente (rand()/((double)RAND_MAX+1) genera degli pseudo-random uniformi su [0,1]).

    ———————————

    Esistono dei metodi per controllare l'uniformità (i test di uniformità), ma non avendone mai operati posso dirti poco a riguardo.

    Posso, tuttavia, rimandarti a una pagina che spiega abbastanza bene come funzionano:

    http://www.shadlen.org/ichbin/random/testing/testi...

    Qui viene spiegato usando come base degli RNG anziché LCG, ma il procedimento dovrebbe comunque essere lo stesso:

    http://www.cash-cow.it/data-mining/generatori-nume...

Altre domande? Fai una domanda e ottieni le risposte che cerchi.