Ich suche nach einem prägnanten, modernen C # -Code, um eine zufällige Doppelzahl zwischen 1.41421
und 3.14159
zu generieren. wobei die Nummer [0-9]{1}.[0-9]{5}
format sein sollte.
Ich denke, dass eine Lösung, die Enumerable.Range
verwendet, dies irgendwie prägnanter macht.
Sie können einfach eine Methode definieren, die eine Zufallszahl zwischen zwei Werten zurückgibt:
%Vor%Sie können diese Methode dann mit Ihren gewünschten Werten aufrufen:
%Vor% Sie können auch keine Dezimalzahl erzwingen, die Ihrem Muster entspricht. Z.B. Wenn Sie 1.5
number haben, stimmt das 1.50000
format nicht überein. Daher sollten Sie result als String formatieren:
hier meine Lösung, es ist nicht schön, aber es funktioniert gut
Random rnd = new Random();
double num = Convert.ToDouble(rnd.Next(1, 15) + "." + rnd.Next(1, 100));
Console.WriteLine(num);
Console.ReadKey();
Sehen Sie sich den folgenden Link für vorgefertigte Implementierungen an, die helfen sollten:
MathNet.Numerics, Zufallszahlen und Wahrscheinlichkeitsverteilungen
Besonders interessant sind die umfangreichen Distributionen, die auf den Zufallszahlengeneratoren (MersenneTwister usw.) aufsetzen, die direkt von System.Random abgeleitet sind und alle nützliche Erweiterungsmethoden bieten (z. B. NextFullRangeInt32, NextFullRangeInt64, NextDecimal usw.). Sie können natürlich nur die Standard-SystemRandomSource verwenden, die einfach System.Random mit den Erweiterungsmethoden verschönert.
Oh, und Sie können Ihre RNG-Instanzen als threadsicher erstellen, wenn Sie sie brauchen.
Sehr praktisch!
Tags und Links c#