Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    40

    Funzione Random con probabilità non uniforme

    ciao a tutti,

    Ho il seguente problema e spero possiate aiutarmi...

    Mi serve un algoritmo che generi numeri casuali secondo una distribuzione di probabilita' non uniforme, ma con la maggior parte dei valori generati concentrati intorno a un valore PICCO passato come parametro alla funzione.
    In pratica se chiamo la funzione con:

    risultato = Genera (from, to, picco)

    dove from=30, to=100, picco=80

    Mi interessa che il valore ottenuto sia molto probabilmente attorno
    all'80.


    grazie in anticipo...

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Non so in che lingiaggio ti serve, comunque ti serve un algoritmo per implementare una distribuzione gaussiana. La classe Random di Java ha un metodo nextGaussian che restituisce una distribuzione di numeri tra -1 e 1 e con picco zero. Una volta generato il numero casuale basta moltiplicarlo per ((to - from) / 2) e sommarlo al tuo valore "picco" per ottenere quello che vuoi.

    Per c++ ho trovato questo riferimento:

    http://manitou.gel.ulaval.ca/~parizeau/doc/a00073.html

    in cui c'è implementata una classe con il metodo

    getGaussianFloat (double inMean=0, double inStdDev=1)

    in cui inMean rappresenta il picco e inStdDev rappresenta la deviazione standard (che è legata ai valori to e from, non ricordo la formula precisa, ma forse è proprio inStdDev = ((to - from) / 2))


  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    40
    grazie per la risposta, ma...

    ...non ho capito una mazza!

    Mi puoi dare qualche altra dritta?


  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ma per quale linguaggio ti serve???

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    40
    Originariamente inviato da anx721
    Ma per quale linguaggio ti serve???
    bè visual basic, ma se hai qualcosa in C, C++, Pascal o java va bene uguale...

    ciao e grazie

  6. #6
    vb6 o vb.net
    non è precisamente la stessa cosa
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    40
    Originariamente inviato da xegallo
    vb6 o vb.net
    non è precisamente la stessa cosa

    non ti ho capito xegallo.
    Quello che intendevo è che sono disperatamente alla ricerca di una funzione che faccia quello che ho detto, quindi anche un esempio in Assembly 8085 va bene lo stesso! Il porting è l'ultima cosa che mi preoccupa!

    Certo se vosse in VB nn saremmo OT... :quipy:

  8. #8
    sono io che non ti capisco ti serve per vb te lo metto in vb se ti serve in c la chiedi in c mi sembra semplice la cosa se non mettete il linguaggio per gli altri utenti è + difficile rispondere
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    codice:
    Private Function Rand(limitesup As Integer, limiteinf As Integer, picco As Integer, tolleranza As Integer) As Variant
    Dim x As Integer
    Dim y As Integer
    Dim i As Integer
    Randomize
    For i = 0 To tolleranza
        x = Int((limitesup - limiteinf + 1) * Rnd + limiteinf)
        y = x
        If y > picco - tolleranza And x < picco + tolleranza Then
            Rand = y
            Exit For
        Else
            y = 0
        End If
    Next
    If y = 0 Then
        Rand = x
    End If
    End Function
    così potrebbe andare? fa una setrie di tentativi (tolleranza) se poi proprio non vuole uscire spara il num casuale
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    40
    ora faccio qualche prova, intanto grazie...

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.