簡體   English   中英

如何在c#中生成一個包含3個字母和6個數字的隨機字母數字數組?

[英]How do I generate a random alphanumeric array that has 3 letter and 6 digits in c#?

我正在嘗試生成一個由3個字母和6個數字組成的隨機字母數字數組。 整個數組必須是隨機的。 我能想到的唯一方法是生成2個單獨的隨機數組,然后合並它們並隨機化合並的數組。 任何幫助,將不勝感激。 我特別需要幫助確保存儲正確數量的變量類型。 這是我的半工作代碼:

 static void Main(string[] args)
    {
        var alphabetic = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var numeric = "0123456789";
        var stringChars = new char[9];
        var random = new Random();


        for (int i = 0; i < 3; i++)
        {
            stringChars[i] = alphabetic[random.Next(alphabetic.Length)];
        }
        for(int i = 3; i< stringChars.Length; i++)
        {
            stringChars[i] = numeric[random.Next(numeric.Length)];
        }


        var ranChars = new char[9];
        var semisorted = new String(stringChars);

        for (int i=0; i< ranChars.Length; i++)
        {
            ranChars[i] = semisorted[random.Next(semisorted.Length)];
        }


        var final = new string(ranChars);

        Console.WriteLine("{0}", final);
        Console.ReadLine();


    }

你很親密 但問題在於你是從“半分類”數組中隨機選擇的,而那時真正需要的是選擇一個隨機排列。 一種方法是使用Fisher-Yates shuffle

所以將它與你工作的代碼相結合:(未經測試)

for (int i = 0; i < 3; i++)
{
    stringChars[i] = alphabetic[random.Next(alphabetic.Length)];
}
for(int i = 3; i< stringChars.Length; i++)
{
    stringChars[i] = numeric[random.Next(numeric.Length)];
}
int n = stringChars.Length;
while (n > 1) 
{
    int k = random.Next(n--);
    char temp = stringChars[n];
    stringChars[n] = stringChars[k];
    stringChars[k] = temp;
}
string result = new string(stringChars);

哈羅德的答案更清晰,但這是另外一種方法,用於整個'100種方法在編程中做同樣的事情'的概念。 [編輯:Doh,我顛倒了數字和字母的數量。 這是一個修復:]

public static void Main(string[] args)
    {
        var random = new Random();
        var finalString = string.Empty;
        var finalArray = new string[9];

        for (var i = 0; i < 3; i++)
        {
            var alphabet = random.Next(0, 26);
            var letter = (char) ('a' + alphabet);
            finalArray[i] = letter.ToString().ToUpper();
        }

        for (var i = 3; i < 9; i++)
        {
            var number = random.Next(0, 9);
            finalArray[i] = number.ToString();
        }

        var shuffleArray = finalArray.OrderBy(x => random.Next()).ToArray();
        for (var i = 0; i < finalArray.Length; i++)
        {
            finalString += shuffleArray[i];
        }
        Console.WriteLine(finalString);
        Console.ReadKey();    
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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