簡體   English   中英

生成隨機 6 位數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM