如何创建一组唯一的随机数?

时间:2019-07-03 09:30:58

标签: c#

我已经将此代码用于练习,并且我想列出一个列表,以保留该代码之前编写的每个数字,所以我不想重复。

它只是猜测随机数,我不希望它猜测之前已经猜测的数字。

请明确说明,我想将其列为列表

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

3 个答案:

答案 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