我已经将此代码用于练习,并且我想列出一个列表,以保留该代码之前编写的每个数字,所以我不想重复。
它只是猜测随机数,我不希望它猜测之前已经猜测的数字。
请明确说明,我想将其列为列表
int password = 432678;
int valt = 999999;
for (int i = 0; i < valt; i++)
{
int[] test2 = new int[valt];
Random randNum = new Random();
for (int j = 0; j < test2.Length; j++)
{
test2[i] = randNum.Next(1, valt);
Console.WriteLine("CURRENT: " + test2[i]);
if (test2[i] == password)
{
goto Back;
}
}
}
Back:
Console.WriteLine("password: "+ password);
Console.ReadLine();
答案 0 :(得分:1)
您可以为此使用哈希表或字典。生成一个数字,尝试检查该数字是否已经存在。如果没有,那就使用它。如果重复,请继续生成另一个数字。
如果您的方案支持GUID,那么您可能还会寻找它。
还有另一种可能适合您的方法。除了生成随机数,您还可以每转一圈增加数字。因此,下一个总是与前一个不同。
答案 1 :(得分:0)
应该工作:
Random randNum = new Random();
int password = 432678;
int valt = 999999;
//INITIALIZE LIST
List<int> list = new List<int>();
for (int i = 0; i < valt; i++) list.Add(i);
while (list.Count > 0)
{
int index = randNum.Next(1, list.Count);
Console.WriteLine("CURRENT: " + list[index] + ", LIST SIZE: " + list.Count);
//BREAK WHILE
if (list[index] == password) break;
//REMOVE INDEX FROM LIST
list.RemoveAt(index);
}
Console.WriteLine("password: " + password);
Console.ReadLine();
答案 2 :(得分:0)
马丁的代码:我将随机数设置为静态。
Obj