C# 在字符串中生成4个唯一的数字
我想生成一个由4位数字组成的字符串,这些数字不能被替换并再次使用,例如:1234是可接受的,1223是不可接受的 附言:我不能按照老师的要求使用while!而且没有数组或循环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
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的解决方案。基本上代码相同,但没有循环。