Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    1) per gli estremi la funzione è aperta a destra, cioè ritorna <2^31, mentre non lo è a sinistra (può tornare 0).
    Quando torna 0 ovviamente chiude a destra, qualsiasi cosa ci metti.
    Puoi vedere come funzionano gli addendini ricordando come cos'è RAND_MAX, cioè il massimo che viene ritornato
    Se supponi di avere una funzione random più semplice, cioè tra 0 e 2^2, avrai 4 possibili risultati
    0,1,2,3 (4 no perchè è aperto a destra).
    Ora supponiamo di esaminare coi parametri
    X=4
    Y=10

    (X,Y] (aperto a sx)
    double casuale=X + ((lrand48()+1.)/(RAND_MAX+1.))*(X-Y)

    (0+1)/(3+1) = 1/4
    (1+1)/(3+1) = 2/4
    (2+1)/(3+1) = 3/4
    (3+1)/(3+1) = 4/4
    Quindi i valori (salvo errori) saranno

    4+ 1/4 * (6) = 5.5
    4+ 2/4 * (6) = 7
    4+ 3/4 * (6) = 8.5
    4+ 4/4 * (6) = 10
    cioè aperto a sinistra, chiuso a destra

    [X,Y) (aperto a dx).
    Togliendo il "+1" si prende il caso 0 (e quindi chiude a sinistra)
    double casuale=X + (lrand48()/(RAND_MAX+1.))*(X-Y)
    (0)/(3+1) = 0
    (1)/(3+1) = 1/4
    (2)/(3+1) = 2/4
    (3)/(3+1) = 3/4

    4+ 0 * (6) = 0
    4+ 1/4 * (6) = 5.5
    4+ 2/4 * (6) = 7
    4+ 3/4 * (6) = 8.5
    ed è chiuso a sinistra, ma aperto a destra



    Ti lascio per esercizio gli altri due casi, essenzialmente il "+1" e "+2" fanno "scorrere" la lista dei numeri, eliminando lo zero (+1) e l'estremo superiore (+2)

    Detto questo: la "vera" domanda è
    qual'è un buon generatore? la risposta è "non si sa di preciso", si adottano test più o meno empirici per saggiarne la qualità.
    Riguardo all'ultimo punto ovviamente non sapendo esattamente come è implementata la funzione non ci si può fidare più di tanto.
    Ultima modifica di MySQL; 21-07-2015 a 18:26

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.