我在寻找一些简洁,现代的C#代码来生成1.41421
和3.14159
之间的随机双号。其中编号应为[0-9]{1}.[0-9]{5}
格式。随机双
我想一些解决方案,利用Enumerable.Range
在某种程度上可以使这个更简洁。
我在寻找一些简洁,现代的C#代码来生成1.41421
和3.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)
OP问小数点 –
使用这样的事情。
Random random = new Random()
int r = random.Next(141421, 314160); //+1 as end is excluded.
Double result = (Double)r/100000.00;
十进制数是必需的。另外,如果你有'1.5''它不会在[0-9] {1}。[0-9] {5}格式 –
@lazyberezovsky它是,因为它是一个双重的分裂。 OFC。格式化需要根据需要完成。 – dognose
我认为OP指的是[这个十进制](https://en.wikipedia.org/wiki/Decimal)不是[那十进制](http://msdn.microsoft.com/en-us/library/system .decimal.aspx) –
Random r = new Random();
var number = r.Next(141421, 314160)/100000M;
你也不能强迫十进制数来匹配你的格局。例如。如果你有1.5
号码,它将不会匹配1.50000
格式。所以,你应该格式化结果为字符串:
string formattedNumber = number.ToString("0.00000");
1.41421和3.14159之间 – dognose
@ dognose啊谢谢。我认为它应该匹配[0-9] {1}。[0-9] {5}格式 –
'System.Decimal'可以有尾随零。例如'var x = 1.50000M;'调用'x.ToString()'**将返回'“1.50000”'。也许分区'150000/100000M'甚至会产生尾随零? –
我用这个。我希望这有帮助。
Random Rnd = new Random();
double RndNum = (double)(Rnd.Next(Convert.ToInt32(LatRandMin.Value), Convert.ToInt32(LatRandMax.Value)))/1000000;
请查看以下链接现成的实现,应该有所帮助:
MathNet.Numerics, Random Numbers and Probability Distributions
广泛分布是特别感兴趣的,建立在随机数发生器的顶部(梅森旋转算法等)直接从System.Random派生,所有这些都提供了方便的扩展方法(例如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();
你问一个小数,但答案给你不同的方式来生成随机双号。如果你正在寻找一个随机十进制数[this](http://stackoverflow.com/questions/609501/generating-a-random-decimal-in-c-sharp)可能会有所帮助。 –
@MechanicalObject在这个尺度和精度下,'double'和'decimal'之间没有区别,两个系统都可以表示该范围内的所有6位数字。 –
@ScottChamberlain:是的,我知道这个谢谢你。但是我不知道的是,如果dotnetandsqldevelop在''之后限制了数字。为了问题的缘故。 3.14159看起来像PI,并且考虑到他要求小数,所以我认为这个链接可能是有用的。 –