第9代数字随机数,包括前导零

Nar*_*ana 2 vb.net

我想生成随机数,如果数字小于9位,则为9位数,包括前导零,假设123为000000123.我有以下代码,不包括前导零:

Dim RandomClass As New Random()
Dim RandomNumber = RandomClass.Next(1, 999999999)
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jon*_*eet 6

编辑:虽然我仍然非常喜欢下面的"个别数字"方法,但有一种更简单的方法 - 只需提供自定义数字格式:

C#:

Random rng = new Random();
int number = rng.Next(1, 1000000000);
string digits = number.ToString("000000000");
Console.WriteLine(digits);
Run Code Online (Sandbox Code Playgroud)

VB:

Dim rng As New Random
Dim number As Integer = rng.Next(1, 1000000000)
Dim digits As String = number.ToString("000000000") 
Console.WriteLine(digits)
Run Code Online (Sandbox Code Playgroud)

编辑:正如评论中指出的那样,D9的格式字符串也可以完成这项工作:

Dim digits As String = number.ToString("D9") 
Run Code Online (Sandbox Code Playgroud)

就个人而言,我不得不查看它会做什么,而我对自定义数字格式感到满意 - 但这更多地说明了我而不是代码:)


我不会在1到999999999之间生成一个数字,而是在0到9之间生成9个数字.基本上你生成一个字符串而不是一个数字(数字000000000和0相等,但你不想要第一个).

因此,在Character数组中生成9个字符"0"到"9",然后从中创建一个字符串.

这是一些C#代码示例:

using System;

class Test
{
    static void Main(string[] args)
    {
        Random rng = new Random();
        string digits = GenerateDigits(rng, 9);
        Console.WriteLine(digits);
    }

    static string GenerateDigits(Random rng, int length)
    {
        char[] chars = new char[length];
        for (int i = 0; i < length; i++)
        {
            chars[i] = (char)(rng.Next(10) + '0');            
        }
        return new string(chars);
    }
}
Run Code Online (Sandbox Code Playgroud)

...并将其转换为VB:

Public Class Test

    Public Shared Sub Main()
        Dim rng As New Random
        Dim digits As String = Test.GenerateDigits(rng, 9)
        Console.WriteLine(digits)
    End Sub

    Private Shared Function GenerateDigits(ByVal rng As Random, _
                     ByVal length As Integer) As String
        Dim chArray As Char() = New Char(length  - 1) {}
        Dim i As Integer
        For i = 0 To length - 1
            chArray(i) = Convert.ToChar(rng.Next(10) + &H30)
        Next i
        Return New String(chArray)
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

需要注意的一点是:此代码可以生成"000000000"而您的原始代码的最小值为1.您实际上希望最小值是多少?

  • 您不必使用自定义数字格式,填充零的标准格式代码.`number.ToString( "D9")` (2认同)