数量大概在500W左右,要求不重复并无规律
不知有何办法

解决方案 »

  1.   

    Guid gid = new Guid();
    string str = gid.ToString();绝对很随机,绝对不会重复。如果你要指定长度,在ToString后在取SubString就可以了,长度不够就多几个Guid加来。
      

  2.   

    Random rand = new Random(unchecked(iCount * (int)DateTime.Now.Ticks));
    int i=rand.Next(1, 100);
      

  3.   

    这个1~100肯定有重复的。Guid gid = new Guid();
    string str = gid.ToString();
    是很好的办法。绝对的不重复
      

  4.   

    支持这种
    Guid gid = new Guid();
    string str = gid.ToString();
      

  5.   

    Guid gid = new Guid();
    实验不成功, 返回的不能直接转换成INT类型, 而且时间很长 5秒 DateTime dt1 = DateTime.Now;
                Random a = new Random();
                Dictionary<int, bool> dict = new Dictionary<int, bool>(5000000);
                while (true)
                {
                    int i = a.Next(0, 100000000);
                    if (!dict.ContainsKey(i))
                    {
                        dict[i] = true;
                    }                if (dict.Count == 5000000)
                    {
                        break;
                    }
                }            TimeSpan span1 = DateTime.Now.Subtract(dt1);
                Console.WriteLine(span1.TotalMilliseconds);采用 Dictionary<int, bool> 和 Random
    只需要2秒
      

  6.   


    int i = a.Next(0, Int32.maxValue);
    效果不太显著,在我的电脑上1.3秒
      

  7.   

    Guid gid = new Guid();
    string str = gid.ToString();
      

  8.   

    GUID 是一个 128 位整数(16 字节),可用于所有需要唯一标识符的计算机和网络。此标识符重复的可能性非常小。
      

  9.   

    不要随机了,DateTime.Ticks,以毫秒为单位,表示时间刻度,用这种方式要在毫秒级重复不太容易。
      

  10.   

    果然不错
    也许有很多方法
    1.用Guid.NewGuid()产生GUID。2.用DateTime.Ticks,楼上仁兄说了。3.用Random(),不过要设置条件,且较慢。4.还有种方法可以尝试,就是从文本或XML中取出一行数,当然这行数是之前保存好的,这样能节省些资源。(本人没试过)
      

  11.   

    慢不慢 需要论证啊, 需要有实验结果
    我测试的Random() 做500万不重复数据 2秒(完全达到楼主的效果)
      

  12.   

    Guid gid = new Guid();
      

  13.   

    GUID是由电脑网卡号和当时的时间运算出来的。网卡号是全球唯一的号,GUID是全球唯一的号,不可能重复
      

  14.   

           Random r = new Random();
            Response.Write(r.Next(1000000, 4999999).ToString()); 
      

  15.   

    protected static string GetNumPwd(int num)//生成数字随机数 
        {
            string a = "0123456789";
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < num; i++)
            {
                sb.Append(a[new Random(Guid.NewGuid().GetHashCode()).Next(0, a.Length - 1)]);
            }        return sb.ToString();
        }     protected void Button15_Click(object sender, EventArgs e)
        {//生成5位随机数
            TextBox1.Text = GetNumPwd(5);
        }