Προς το περιεχόμενο

Δημιουργία τυχαίου αριθμού με βάση κάποια κατανομή


stormrider

Προτεινόμενες αναρτήσεις

Δημοσ.

γειά χαρά,

 

θέλω να δημιουργήσω μία συνάρτηση στη visual basic .net που να παράγει τυχαίο αριθμό με βάση κάποια γνωστή κατανομή και για γνωστή μέση τιμή αυτής της κατανομής.

 

για παράδειγμα, για εκθετική κατανομή και γνωστή μέση τιμή στο excel είναι:

=-LN(RAND())/$D$3

για τη visual basic .net έχει κανείς καμμία ιδέα πως είναι η εντολή ή τουλάχιστον που να ψάξω;

Δημοσ.

Για εκθετική (το παράδειγμά σου) δεν έχω δει κάτι αλλά δεν είναι δύσκολο.

 

Ξεκίνα να κοιτάς εδώ [ http://www.library.cornell.edu/nr/cbookcpdf.html ] κεφάλαιο 7 και εδώ για Gaussian [ http://www.taygeta.com/random/gaussian.html ].

 

Ελπίζω να βοήθησα...

 

(

Φυσικά δεν μιλάω σε καμία περίπτωση για μία εντολή σε κάποιο μη μαθηματικό λογισμικό. Βέβαια αν μιλάμε για 'έτοιμα' πράγματα τότε ρίξε μια ματιά εδώ [ http://www.netlib.org/lapack/double/dlarnv.f ] ή κάπου εκεί κοντά... στον ανοικτό κώδικα πάντα... [ http://cheminfo.informatics.indiana.edu/~rguha/code/java/nightly/api/org/openscience/cdk/math/RandomNumbersTool.html ]

)

Δημοσ.

Αν και δεν ασχολούμαι με το .NET (έχω το παλιό Visual Studio 2001) εντούτοις νομίζω ότι ο παρακάτω κώδικας σε C# (από όσο έχω ακούσει η VB .NET είναι παρόμοια) λειτουργεί λίγο - πολύ όπως και εκείνος του Excel:

 

>
double	A	=	6,R;
		
Random	Rand=new Random();						 
R=Math.Log(Rand.NextDouble())/A;
System.Windows.Forms.MessageBox.Show(R.ToString());	

 

Η εντολή LN από ότι είδα στο Documentation του .NET (και του EXCEL) μπορεί να αναπαραχθεί από την Log ενώ η RAND από την Rand.NextDouble που προσφέρει η Random Class.

 

Το double A περιέχει την τιμή του "κελιού" ενώ το R το αποτέλεσμα, η γραμμή System.Windows... παρουσιάζει το αποτέλεσμα στην οθόνη.

 

Αν κάποιος άλλος έχει ασχοληθεί με την VB .NET και έχει να προτείνει κάτι καλύτερο τότε άκουσε την συμβουλή του.. όσο για τους οπαδούς της C# ας μου συγχωρήσουν τα οποία σφάλματα αλλά είναι μια από τις ελάχιστες φορές που γράφω κώδικα στην γλώσσα τους :)

 

Καλή τύχη!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...