static string GetRandomNumber80(int seed) 

    Random random = new Random(seed); 
    string[] strs = new string[80]; 
    for (int i = 0; i < strs.Length; i++) 
    { 
        strs[i] = random.Next(200,1001).ToString(); 
    } 
    return string.Join(",", strs.ToArray()); 
} 这个代码生成的是有重复的伪随机函数,如果不要重复的怎么改呢?

解决方案 »

  1.   

    参考
      int iSeed=10; 
      Random ro = new Random(10); 
      long tick = DateTime.Now.Ticks;   
      Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> 32)); 
      

  2.   

    long tick = DateTime.Now.Ticks;  
      Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> 32)); 这个就行了……
      

  3.   

    你这个只是个3位数,肯定会有重复的啊.除非你每生成一个数字就去strs里查找一次,除此之外没有其它办法.
      

  4.   


    static string GetRandomNumber80(int seed)
    {
        List<int> list = new List<int>();
        Random random = new Random(seed);
        while(list.Count < 80)
        {
            int i = random.Next(200,1001);
            if(!list.Contains(i))
               list.Add(i);
        }
        return string.Join(",", list.ConvertAll<string>(Convert.ToString).ToArray());

      

  5.   

    public List<int> GetRandomArray(int Number,int minNum,int maxNum)
      {
       int j;
       List<int> lst=new List<int>();
       Random r=new Random();
       for(j=0;j<Number;j++)
       {
        int i=r.Next(minNum,maxNum);
        int num=0;
        for(int k=0;k<j;k++)
        {
         if(lst[k]==i)
         {
          num=num+1;
         }
        }
        if(num==0 )
        {
        lst[j]=i;
        }
        else
        {
         j=j-1;
        }
       }
       return lst;
      }