Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成c#中有3个字母和6个数字的随机字母数字数组?_C#_Arrays_Random - Fatal编程技术网

如何生成c#中有3个字母和6个数字的随机字母数字数组?

如何生成c#中有3个字母和6个数字的随机字母数字数组?,c#,arrays,random,C#,Arrays,Random,我试图生成一个由3个字母和6个数字组成的随机字母数字数组。整个数组必须是随机的。我能想到的唯一方法是生成两个单独的随机数组,然后将它们合并并随机化合并的数组。任何帮助都将不胜感激。我特别需要关于确保存储正确数量的变量类型的帮助。这是我的半工作代码: static void Main(string[] args) { var alphabetic = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var numeric = "01234567

我试图生成一个由3个字母和6个数字组成的随机字母数字数组。整个数组必须是随机的。我能想到的唯一方法是生成两个单独的随机数组,然后将它们合并并随机化合并的数组。任何帮助都将不胜感激。我特别需要关于确保存储正确数量的变量类型的帮助。这是我的半工作代码:

 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();


    }
static void Main(字符串[]args)
{
var alphatic=“abcdefghijklmnopqrstuvxyz”;
var numeric=“0123456789”;
var stringChars=新字符[9];
var random=新的random();
对于(int i=0;i<3;i++)
{
stringChars[i]=字母[random.Next(字母长度)];
}
for(int i=3;i
你很接近了。但这里的问题是,您从“半排序”数组中随机选择,而此时真正需要的是选择一个随机排列。其中一种方法是使用一个

因此,将其与您已经运行的代码结合起来:(未经测试)

for(int i=0;i<3;i++)
{
stringChars[i]=字母[random.Next(字母长度)];
}
for(int i=3;i1)
{
int k=random.Next(n--);
char temp=stringChars[n];
stringChars[n]=stringChars[k];
stringChars[k]=温度;
}
字符串结果=新字符串(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();    
    }
publicstaticvoidmain(字符串[]args)
{
var random=新的random();
var finalString=string.Empty;
var finalArray=新字符串[9];
对于(变量i=0;i<3;i++)
{
var字母=随机。下一个(0,26);
变量字母=(字符)('a'+字母表);
finalArray[i]=letter.ToString().ToUpper();
}
对于(变量i=3;i<9;i++)
{
变量数=随机数。下一个(0,9);
finalArray[i]=number.ToString();
}
var shufflarray=finalArray.OrderBy(x=>random.Next()).ToArray();
对于(变量i=0;i
可能重复@RionWilliams我不同意,这次有字母和数字的具体计数,这需要一个非常不同的技术公平点。我对此持怀疑态度,虽然在这条线索中有很多技巧,但我不相信有任何封面特定数量的角色。我已经撤回了投票结果,没有提到结果中是否可以重复字符和数字。你想要组合还是排列?这闻起来像是我的家庭作业。因为我没有意识到我留下了测试的剩余部分,所以再次清理。这不是很明显,但这种洗牌方式偏向于将项目保留在原始顺序。这不是一个很大的影响,因为随机性的范围很大。但是假设你有
random。下一步(2)
,你正在洗牌一个包含2项的列表。OrderBy是稳定的,因此3/4的结果(对于随机数)使其给出原始顺序。对于
Next(3)
它是6/9,依此类推,直到((2^31+1)选择2)/(2^31^2)大约0.50000000023。超过2的列表显然有类似的问题,但是思维实验更难。伟大的洞察力和一些我没有考虑到的,但却是一个非常有效的观点。我感谢您的反馈!
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();    
    }