C# 在字符串中生成4个唯一的数字

C# 在字符串中生成4个唯一的数字,c#,C#,我想生成一个由4位数字组成的字符串,这些数字不能被替换并再次使用,例如:1234是可接受的,1223是不可接受的 附言:我不能按照老师的要求使用while!而且没有数组或循环 Random Item = new Random(); int Num1, Num2, Num3, Num4; do { Num1 = Item.Next(0, 10); Num2 = Item.Next(0, 10); Num3 = Item.Next(0, 10); Num4

我想生成一个由4位数字组成的字符串,这些数字不能被替换并再次使用,例如:1234是可接受的,1223是不可接受的

附言:我不能按照老师的要求使用while!而且没有数组或循环

Random Item = new Random(); 
int Num1, Num2, Num3, Num4; 
do { 
    Num1 = Item.Next(0, 10); 
    Num2 = Item.Next(0, 10); 
    Num3 = Item.Next(0, 10); 
    Num4 = Item.Next(0, 10); 
} while (Num1 == Num2 || Num1 == Num3 
            || Num1 == Num4 || Num2 == Num3 
            || Num2 == Num4 || Num3 == Num4);

string Source = string.Format("{0}{1}{2}{3}", Num1, Num2, Num3, Num4);
使用LINQ:

var r = new Random();           
return new String("1234567890".OrderBy(x => r.Next()).Take(4).ToArray());
试试这个

            List<int> digits = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            Random ran = new Random();
            string ranString = "";
            for(int i = 0; i < 4; i++)
            {
                int index = ran.Next(0, digits.Count);
                ranString += digits[index].ToString();
                digits.RemoveAt(index);
            }
List digits=newlist(){0,1,2,3,4,5,6,7,8,9};
Random ran=新的Random();
字符串ranString=“”;
对于(int i=0;i<4;i++)
{
int index=ran.Next(0,位数.Count);
TransString+=数字[索引].ToString();
数字。删除(索引);
}
以下是您的解决方案:

namespace ClassLibrary1
{
    public class Class1
    {
        public void Generate()
        {
            string remainingDigits = "0123456789";
            System.Random r = new System.Random();
            string output = null;
            int count = 10;
            int index = r.Next(count);
            output += remainingDigits[index];
            remainingDigits = remainingDigits.Remove(index, 1);
            count -= 1;
            index = r.Next(count);
            output += remainingDigits[index];
            remainingDigits = remainingDigits.Remove(index, 1);
            count -= 1;
            index = r.Next(count);
            output += remainingDigits[index];
            remainingDigits = remainingDigits.Remove(index, 1);
            count -= 1;
            index = r.Next(count);
            output += remainingDigits[index];
        }
    }
}

您自己尝试过什么吗?到目前为止,您尝试过什么,您的解决方案有哪些问题,您知道如何解决这个问题的哪些方面,哪些方面您不知道如何解决,您在如何解决这个问题上看过哪些资源,您了解了哪些问题?
返回“1234”@doogle,是的,事实上我试了很多次都放弃了!到目前为止,我尝试过的任何东西都有一段时间,我搜索了一个特定的函数,但至今找不到它!我想到了一个介于1234和9876之间的随机数,但这不能保证它的唯一性@如果你展示一些代码,即使它包含一个while循环,也会对你的问题有所帮助?对不起,我太天真了:(
使用System.Linq;
在您的文件顶部,我认为不能使用而不允许使用循环…这就是为什么老师特别提到了4位数字。谢谢,但是我的C#不能识别大多数命令,我应该使用不同的用法吗?上面的代码只将系统添加到了Random中。没有use语句它是必需的。这对.NET 4.5和.NET 2.0都有效。我对类库的唯一参考是System(无论如何,对于.NET 2.0)。你在使用哪个visual studio?如果你不想要循环,那么就使用Marc的解决方案。基本上代码相同,但没有循环。