首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包括前导零的第9代数字随机数

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

Stack Overflow用户
提问于 2010-07-15 14:58:04
回答 3查看 17.5K关注 0票数 2

我想生成随机数,它是9位数,包括前导0,如果数字小于9位数,假设123将是000000123。我有以下不包含前导零的代码:

代码语言:javascript
复制
Dim RandomClass As New Random()
Dim RandomNumber = RandomClass.Next(1, 999999999)

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-15 14:58:48

编辑:虽然我仍然很喜欢下面的“单个数字”方法,但有一个更简单的方法-只需给出一个自定义的数字格式:

C#:

代码语言:javascript
复制
Random rng = new Random();
int number = rng.Next(1, 1000000000);
string digits = number.ToString("000000000");
Console.WriteLine(digits);

VB:

代码语言:javascript
复制
Dim rng As New Random
Dim number As Integer = rng.Next(1, 1000000000)
Dim digits As String = number.ToString("000000000") 
Console.WriteLine(digits)

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

代码语言:javascript
复制
Dim digits As String = number.ToString("D9") 

就我个人而言,我必须准确地查找它会做什么,而我对自定义数字格式很满意-但这更多地反映了我的情况,而不是代码:)

我不会生成1到999999999之间的单个数字,而是只生成0到9之间的9个数字。基本上,您生成的是一个字符串而不是一个数字(因为数字000000000和0是等价的,但您不想要第一个数字)。

因此,在字符数组中生成9个字符'0‘到'9’,然后从中创建一个字符串。

下面是一些示例C#代码:

代码语言:javascript
复制
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);
    }
}

..。并将其转换为VB:

代码语言:javascript
复制
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

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

票数 6
EN

Stack Overflow用户

发布于 2010-07-15 15:10:30

您需要将变量声明为string类型。整数不能有前导零。请查看下面的示例:

代码语言:javascript
复制
 Dim RandomClass As New Random()


    Dim randomString As String


    For i = 1 To 1000 Step 1

        randomString = RandomClass.Next(1, 999999999).ToString

        If randomString.Length < 9 Then
            randomString = randomString.PadLeft(9, "0")
        End If
        Response.Write(randomString & "<br/>")
    Next
票数 3
EN

Stack Overflow用户

发布于 2010-07-15 19:40:11

999999999是合法的值吗?如果是的话..。

代码语言:javascript
复制
'
Dim myRand As New Random
'
Private Function NineDigitRand() As String
    'return a numeric string between 000000001 and 999999999 inclusive
    Return myRand.Next(1, 1000000000).ToString("d9")
End Function
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3253157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档