如何生成带点的随机数?

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