比如 a=38.395 ,b=39.649如何随机产生 a和b之间的随机小数且不重复小数位数可以是 3位,4位 均可 

解决方案 »

  1.   

    x = random.Next(38000, 40000) / 1000.0;
      

  2.   

                Random random = new Random();
                bool b = true;
                List<int> list = new List<int>();
                while (b)
                {                int i = random.Next(38000, 40000) ;
                    
                    if (!list.Contains(i)) list.Add(i);
                    if (list.Count >= 500) b=false;            }
                foreach (int i in list)
                {
                    Console.WriteLine(i/1000.000);
                }
                Console.ReadKey();
      

  3.   


    Random random = new Random();
    int min = 38395, max = 39649, count = 500;
    var result = Enumerable.Range(min, max - min).OrderBy(x => random.Next()).Take(count).Select(x => x / 1000.0);
      

  4.   

    http://www.cnblogs.com/eaglet/archive/2011/01/17/1937083.html看这篇文章的评论的57楼的方法
      

  5.   

    文章不错 只是我有点怀疑,Guid.NewGuid().GetHashCode()).Next()是可以不重复 但是Guid.NewGuid().GetHashCode()).Next() % 20就真的可以了么
      

  6.   

    你没理解这整段代码,如果单看Guid.NewGuid().GetHashCode()).Next()是会重复,
    我们不是关心这个,而是这个索引是否随机,毕竟给的这个数组每个元素都是唯一
    用随机数去乱序而已