如何生成带点的随机数?
How to generate random number with dot?
我有经典的随机数整数生成器。
但是我需要一个从0到第一个后三位小数的随机数,最小的是0.010,最大的是9.910。
Example: 0.136 OR 1.539
我的代码功能是这样的:
Public Function RandomWtring(len As Integer) As String
Dim chars = "0123456789"
Dim str_len = len
Dim randomstring = ""
For i As Integer = 0 To len - 1
Dim rNum = Math.Floor(Rnd() * chars.Length)
randomstring += chars.Substring(rNum, 1)
Next
Return randomstring
End Function
但是我不知道如何做 0.254 例子...谢谢
只需使用Rnd() * upperLimit
。它将生成十进制随机数,然后您可以使用 Math.Round
方法将其四舍五入到您喜欢的任何小数位。
Math.Floor
将数字转换为整数(给定数字以下的大整数)。
随机数生成器 (RNG) 通常生成一个介于零到(但不包括)另一个数字之间的数字。要生成从最小到最大范围内的随机数,您需要获取范围的大小,使用 RNG,然后将其缩放回所需的范围。
VB.NET Rnd() 函数实际上并不是一个很好的 RNG; .NET Random Class 好一点(在某些方面有更好的,但对于这个问题我们不要担心)。所有 RNG 都需要某种初始化来启动它们,因此您需要做的是让行
Dim rand As New Random()
代码中实际函数之外的某处:
Function MyRandomNumber() As String
Dim min As Decimal = 0.01D
Dim max As Decimal = 9.91D
Dim decimalPlaces = 3
Dim multiplier = CDec(Math.Pow(10, decimalPlaces))
Dim range = (max - min) * multiplier
Dim val = rand.Next(0, CInt(range + 1))
Return (val / multiplier + min).ToString()
End Function
我为最小值和最大值以及所需的小数位数使用了变量,以防您需要更改它们。此外,为此类事情使用适当命名的变量是一种很好的编程习惯,这样如果您在几个月后返回代码时更容易理解发生了什么。
如果您需要数字而不是字符串,请将声明更改为
Function MyRandomNumber() As Decimal
和 return 行
Return val / multiplier + min
我有经典的随机数整数生成器。
但是我需要一个从0到第一个后三位小数的随机数,最小的是0.010,最大的是9.910。
Example: 0.136 OR 1.539
我的代码功能是这样的:
Public Function RandomWtring(len As Integer) As String
Dim chars = "0123456789"
Dim str_len = len
Dim randomstring = ""
For i As Integer = 0 To len - 1
Dim rNum = Math.Floor(Rnd() * chars.Length)
randomstring += chars.Substring(rNum, 1)
Next
Return randomstring
End Function
但是我不知道如何做 0.254 例子...谢谢
只需使用Rnd() * upperLimit
。它将生成十进制随机数,然后您可以使用 Math.Round
方法将其四舍五入到您喜欢的任何小数位。
Math.Floor
将数字转换为整数(给定数字以下的大整数)。
随机数生成器 (RNG) 通常生成一个介于零到(但不包括)另一个数字之间的数字。要生成从最小到最大范围内的随机数,您需要获取范围的大小,使用 RNG,然后将其缩放回所需的范围。
VB.NET Rnd() 函数实际上并不是一个很好的 RNG; .NET Random Class 好一点(在某些方面有更好的,但对于这个问题我们不要担心)。所有 RNG 都需要某种初始化来启动它们,因此您需要做的是让行
Dim rand As New Random()
代码中实际函数之外的某处:
Function MyRandomNumber() As String
Dim min As Decimal = 0.01D
Dim max As Decimal = 9.91D
Dim decimalPlaces = 3
Dim multiplier = CDec(Math.Pow(10, decimalPlaces))
Dim range = (max - min) * multiplier
Dim val = rand.Next(0, CInt(range + 1))
Return (val / multiplier + min).ToString()
End Function
我为最小值和最大值以及所需的小数位数使用了变量,以防您需要更改它们。此外,为此类事情使用适当命名的变量是一种很好的编程习惯,这样如果您在几个月后返回代码时更容易理解发生了什么。
如果您需要数字而不是字符串,请将声明更改为
Function MyRandomNumber() As Decimal
和 return 行
Return val / multiplier + min