2016-05-18 21 views
0

erzeugen Ich versuche, Zufallszahlen mit exponentieller Verteilung zu generieren. Ich habe das Math.NET NuGet Paket gefunden. Es sieht gut aus, aber ich kann nicht herausfinden, wie man einen Vektor dieser Art von Daten erzeugt.Math.Net Wie Vektor der exponentiellen Verteilung Zufallszahlen

Ich habe den Bezug genommen und versucht, so etwas wie dieses (durch offizielle Website inspiriert) - Ich weiß, dass Uniform nicht Exponential Werte erzeugen .:

Generate.Uniform(100); 

Allerdings erhalte ich: „erzeugen, existiert nicht in der . aktuelle Kontext „

ich habe auch versucht:

Random rnd= new Random(); 
double[] samples; 
double lambda = 0.1; 
Exponential.Samples(rnd, samples,lambda); 

Hier erhalte ich‚Invalid Ausdruck Begriff ‚)‘‘und“, erwartet“in der letzten Zeile.

+0

Sie könnten es generieren, ohne Math.Net zu verwenden: https://jamesmccaffrey.wordpress.com/2013/07/17/generating-exponential-distributed-data-in-a-given-range-min-to-max/ –

+0

Also, im Grunde erhalten Sie einen Compilerfehler? –

Antwort

0

Die Funktion Samples erwartet, dass das Array bereits zugewiesen ist, sodass Sie es wiederholt verwenden können. Es füllt das vollständige Array.

Random rnd = new Random(); 
double lambda = 0.1; 

double[] samples = new double[200]; 
Exponential.Samples(rnd, samples, lambda); 

aber Sie haben für einen Vektor gefragt, kein Array:

Vector<double> v = CreateVector.Random<double>(200, new Exponential(lambda, rnd)); 

Der Fehler, den Sie bekam eine C# Syntaxfehler in keinem Zusammenhang mit Math.NET Numerik (und nicht im Code du hast hier gepostet). Für Generate müssen Sie den Namespace MathNet.Numerics öffnen.

+0

Danke :). Noch eine Frage. Wie man den Bereich der generierten Nummern einstellt. Foe Beispiel zwischen 0 und 1? – user2179427

+0

Mit gleichmäßiger Verteilung: 'ContinuousUniform.Samples (rnd, samples, 0.0, 1.0);' Oder meinst du mit einer exponentiellen Verteilung aber gefiltert auf 0.0-1.0? –

+0

Ja, ich meine mit einer exponentiellen Verteilung von 0.0 - 1.0. – user2179427