C# 我怎么能有一个随机数而没有相同的呢

C# 我怎么能有一个随机数而没有相同的呢,c#,asp.net,C#,Asp.net,我的问题是,当我想为我的数据库生成一个id时,我会为此生成一个随机数,但坏的是它会重复 public void Iniciar() { Random r = new Random(); int prevnum = -1; for (int loop = 0; loop < 10; loop++) { do { num = r.Next(1000,9999); } while (num

我的问题是,当我想为我的数据库生成一个id时,我会为此生成一个随机数,但坏的是它会重复

public void Iniciar()
{
    Random r = new Random();
    int prevnum = -1;

    for (int loop = 0; loop < 10; loop++)
    {
        do
        {
            num = r.Next(1000,9999);
        } while (num == prevnum);

        prevnum = num;
    }
}
public void Iniciar()
{
随机r=新随机();
int prevnum=-1;
for(int-loop=0;loop<10;loop++)
{
做
{
num=r.Next(10009999);
}而(num==prevnum);
prevnum=num;
}
}

如果您只是寻找唯一的ID(并且不需要整数),您可以使用UUID:

String id = Guid.NewGuid().ToString()

如果您需要一个唯一的整数ID,最好使用数据库来生成它们(例如mysql的
AUTO_INCREMENT

简单地说:您不能直接生成

System.Random
可以反复生成相同的数字。若你们仍然想要得到“唯一随机”的数字,你们需要将生成的数字存储在一个列表中,然后检查新生成的数字是否在列表中

using System;
using System.Collections.Generic;

class Program
{
    public static int Main(string[] args)
    {
        var numbers = new List<int>();
        Random rnd = new Random();
        for (int n = 0; n < 20; n++)
        {
            int num = rnd.Next(1000, 9999);
            for (int i = 0; i < numbers.Count; i++)
            {
                if (num == numbers[i])
                {
                    while (num == numbers[i])
                        num = rnd.Next(1000, 9999);
                    i = -1;
                }
            }
            numbers.Add(num);
        }
        // Uncomment if you want sorting
        // numbers.Sort();
        // Print numbers so we can check that every entry is unique
        for (int i = 0; i < numbers.Count; i++)
            Console.WriteLine("Id: {0}", numbers[i]);
        return 0;
    }
}
使用系统;
使用System.Collections.Generic;
班级计划
{
公共静态int Main(字符串[]args)
{
变量编号=新列表();
随机rnd=新随机();
对于(int n=0;n<20;n++)
{
int num=rnd.Next(10009999);
for(int i=0;i

若之前生成了相同的数字,此代码将尝试生成随机数,然后重新启动以使用列表检查数字。效率很低,并且不能很好地处理“边缘”数字。(例如,您尝试生成一个只有19个随机数的20个条目列表)

为什么不让数据库生成id?因为随机数并不意味着唯一。随机性不以任何方式依赖于先前的状态。“1,1,1,1,1”是由5个随机数组成的完全有效序列。你到底想做什么?Echo'ing@RonBeyer,了解你想做什么会很好,但表面上看,你应该让你的数据库来处理这个用例-除非有什么原因你不相信它应该我猜也许你想要的是将一些数字混洗,比如创建一个1到100的列表,然后洗牌,就像它们是牌一样。是这样吗?否则,您需要跟踪以前的数字(这不是一件好事)或使用Guid,它们是唯一的,但它们不是数字。信不信由你,Guid可能重复,但冲突的可能性很低,Guid不一定是唯一的。