我在尋找一些簡潔,現代的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,並且考慮到他要求小數,所以我認爲這個鏈接可能是有用的。 –