[英]Generate random 6 digit number
我已經搜索了幾個小時,但似乎找不到這個問題的答案。 我想生成一個 6 位數的隨機數。 你們中的一些人可能會告訴我使用這段代碼:
Random generator = new Random();
int r = generator.Next(100000, 1000000);
但這限制了我的 6 位數的價值都在 100 000 以上。 我希望能夠生成一個包含 000 001、000 002 等的 int。稍后我想將此 integer 轉換為字符串。
如果你想讓一個字符串以零開頭,試試這個。 你不能得到像 001 這樣的 int。
Random generator = new Random();
String r = generator.Next(0, 1000000).ToString("D6");
你想要一個字符串:
Random r = new Random();
var x = r.Next(0, 1000000);
string s = x.ToString("000000");
例如,
x = "2124"
s = "002124"
如評論中所述,“六位數字”是一個字符串。 以下是如何生成 0-999999 的數字,然后將其格式化為“000482”:
Random r = new Random();
int randNum = r.Next(1000000);
string sixDigitNumber = randNum.ToString("D6");
private static string _numbers = "0123456789";
Random random = new Random();
private void DoWork()
{
StringBuilder builder = new StringBuilder(6);
string numberAsString = "";
int numberAsNumber = 0;
for (var i = 0; i < 6; i++)
{
builder.Append(_numbers[random.Next(0, _numbers.Length)]);
}
numberAsString = builder.ToString();
numberAsNumber = int.Parse(numberAsString);
}
我同意上面的評論,即 000 001 不能是整數,但可以是字符串:
Random generator = new Random();
int r = generator.Next(1, 1000000);
string s = r.ToString().PadLeft(6, '0');
string s = generator.Next(0, 1000000).ToString("D6");
或者
string s = generator.Next(0, 1000000).ToString("000000");
這是一個更好的解決方案,因為它為您提供更多隨機數並且不基於系統時鍾。
加密隨機數生成器創建加密強隨機值。
System.Security.Cryptography.RandomNumberGenerator.GetInt32(0, 1000000);
為確保結果值有六位,您可以轉換為字符串並在開頭附加零。 例如GeneratedValue.ToString().Padleft(6,'0')
使用上面的 Matt 方法。
有關更多詳細信息,請參閱官方文檔。
使用的解決方案
Random generator = new Random();
int r = generator.Next(1, 1000000);
似乎並不總是有效。 我在 class 構造函數中調用以下方法,它在第一次后給出相同的數字。
internal string GenerateID()
{
Random r = new Random();
int randNum = r.Next(1000000);
string sixDigitNumber = randNum.ToString("D6");
return sixDigitNumber;
}
附件是class的.net單元測試中調試語句的圖像。我的項目是.net 4.8。
我已經按照上面的建議改用System.Security.Cryptography.RandomNumberGenerator
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.