Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成带有一个数字小数点的随机双精度数_C#_.net_Vb.net_Random_Double - Fatal编程技术网

C# 生成带有一个数字小数点的随机双精度数

C# 生成带有一个数字小数点的随机双精度数,c#,.net,vb.net,random,double,C#,.net,Vb.net,Random,Double,我必须生成一个介于-4.0和4.0之间的数字,包括3.4等所有数字。我已经设法创建了一个随机整数,但在创建双精度时遇到了问题-它只返回一个整数 一个解决办法是,您可以得到一个介于-40和40之间的随机int,然后将结果除以10。。NET random类提供了一个方法NextDouble(),可在这种情况下使用。但是,针对您的案例的变通方法将更容易、更快地实现。例如: Dim r As Random = New Random() Dim d As Double = r.Next(-4, 4) +

我必须生成一个介于-4.04.0之间的数字,包括3.4等所有数字。我已经设法创建了一个随机整数,但在创建
双精度
时遇到了问题-它只返回一个
整数

一个解决办法是,您可以得到一个介于-40和40之间的随机
int
,然后将结果除以10。

。NET random
类提供了一个方法
NextDouble()
,可在这种情况下使用。但是,针对您的案例的变通方法将更容易、更快地实现。例如:

Dim r As Random = New Random()
Dim d As Double = r.Next(-4, 4) + (r.Next(0, 9) / 10) 'First random next call in desired range, and second is to add the decimal point

Console.WriteLine("Generated Number: {0}", d)

您是否介意发布您拥有的代码:围绕您已有的框架提供解决方案要容易得多。我已经找到了问题的解决方案,但如果您感兴趣,我可以发布我使用的代码。当询问有关代码的问题时,请始终发布您已经尝试过的代码。如果你还没有尝试过任何东西,那么这就是你应该首先做的另一个更清晰的方法是
dimdasdouble=r.NextDouble()*8-4
。NextDouble()返回一个介于0和1之间的数字(类似于旧的Rnd()函数)。乘以8得到的范围介于0和8之间,下边界为负4。哦,对于“一个小数点”,只需使用
Math.Round(d,1)
。这是最简单的选择。谢谢。