给定数字之间的随机双倍

我正在寻找一些简洁,现代的C#代码来生成1.414213.14159之间的随机双数。 其中数字应为[0-9]{1}.[0-9]{5}格式。

我正在考虑一些利用Enumerable.Range解决方案可能会使这更简洁。

您可以轻松定义一个在两个值之间返回随机数的方法:

 private static readonly Random random = new Random(); private static double RandomNumberBetween(double minValue, double maxValue) { var next = random.NextDouble(); return minValue + (next * (maxValue - minValue)); } 

然后,您可以使用所需的值调用此方法:

 RandomNumberBetween(1.41421, 3.14159) 

使用这样的东西。

 Random random = new Random() int r = random.Next(141421, 314160); //+1 as end is excluded. Double result = (Double)r / 100000.00; 
 Random r = new Random(); var number = r.Next(141421, 314160) / 100000M; 

此外,您不能强制十进制数匹配您的模式。 例如,如果你有1.5号码,它将不匹配1.50000格式。 因此,您应该将结果格式化为字符串:

 string formattedNumber = number.ToString("0.00000"); 

我用过这个。 我希望这有帮助。

 Random Rnd = new Random(); double RndNum = (double)(Rnd.Next(Convert.ToInt32(LatRandMin.Value), Convert.ToInt32(LatRandMax.Value)))/1000000; 

查看以下链接,了解应该有用的现成实现:

MathNet.Numerics,随机数和概率分布

广泛的分布尤其令人感兴趣,建立在直接从System.Random派生的随机数生成器(MersenneTwister等)之上,所有这些都提供了方便的扩展方法(例如NextFullRangeInt32,NextFullRangeInt64,NextDecimal等)。 当然,您可以使用默认的SystemRandomSource,它只是使用扩展方法修饰的System.Random。

哦,如果需要,可以将RNG实例创建为线程安全的。

非常方便!

在这里我的解决方案,它不漂亮,但它运作良好

Random rnd = new Random(); double num = Convert.ToDouble(rnd.Next(1, 15) + "." + rnd.Next(1, 100)); Console.WriteLine(num); Console.ReadKey();

 JMH BJHBJHHJJ const int SIZE = 1; int nnOfTosses, headCount = 0, tailCount = 0; Random tossResult = new Random(); do { Console.Write("Enter integer number (>=2) coin tosses or 0 to Exit: "); if (!int.TryParse(Console.ReadLine(), out nnOfTosses)) { Console.Write("Invalid input"); } else { //***////////////////// // To assign a random number to each element const int ROWS = 3; double[] scores = new double[ROWS]; Random rn = new Random(); // Populate 2D array with random values for (int row = 0; row < ROWS; row++) { scores[row] = rn.NextDouble(); } //***////////////////////////// for (int i = 0; i < nnOfTosses; i++) { double[] tossResult = new double[i]; tossResult[i]= tossResult.nextDouble(); } Console.Write("Number of Coin Tosses = " + nnOfTosses); Console.Write("Fraction of Heads = "); Console.Write("Fraction of Tails = "); Console.Write("Longest run is "); } } while (nnOfTosses != 0); Console.ReadLine();