我想生成随机数,它是9位数,包括前导0,如果数字小于9位数,假设123将是000000123。我有以下不包含前导零的代码:
Dim RandomClass As New Random()
Dim RandomNumber = RandomClass.Next(1, 999999999)谢谢。
发布于 2010-07-15 14:58:48
编辑:虽然我仍然很喜欢下面的“单个数字”方法,但有一个更简单的方法-只需给出一个自定义的数字格式:
C#:
Random rng = new Random();
int number = rng.Next(1, 1000000000);
string digits = number.ToString("000000000");
Console.WriteLine(digits);VB:
Dim rng As New Random
Dim number As Integer = rng.Next(1, 1000000000)
Dim digits As String = number.ToString("000000000")
Console.WriteLine(digits)编辑:正如评论中所指出的,格式字符串D9也可以完成此工作:
Dim digits As String = number.ToString("D9") 就我个人而言,我必须准确地查找它会做什么,而我对自定义数字格式很满意-但这更多地反映了我的情况,而不是代码:)
我不会生成1到999999999之间的单个数字,而是只生成0到9之间的9个数字。基本上,您生成的是一个字符串而不是一个数字(因为数字000000000和0是等价的,但您不想要第一个数字)。
因此,在字符数组中生成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);
}
}..。并将其转换为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需要注意的一点是:这段代码可以生成"000000000“,而您的原始代码的最小值为1。您实际上希望最小值是多少?
发布于 2010-07-15 15:10:30
您需要将变量声明为string类型。整数不能有前导零。请查看下面的示例:
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发布于 2010-07-15 19:40:11
999999999是合法的值吗?如果是的话..。
'
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 Functionhttps://stackoverflow.com/questions/3253157
复制相似问题