我想生成随机数,如果数字小于9位,则为9位数,包括前导零,假设123为000000123.我有以下代码,不包括前导零:
Dim RandomClass As New Random()
Dim RandomNumber = RandomClass.Next(1, 999999999)
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:虽然我仍然非常喜欢下面的"个别数字"方法,但有一种更简单的方法 - 只需提供自定义数字格式:
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.您实际上希望最小值是多少?
| 归档时间: |
|
| 查看次数: |
15932 次 |
| 最近记录: |