比如我现在有1到50这个50个数,每次循环我都去随机这50个数,如果判断,在随机的时候产生的数不相等?也就是说我想把这个50个数的顺序打乱,分别显示出来??怎么做???

解决方案 »

  1.   

    Random rand = new Random(Guid.NewGuid().GetHashCode());
    rand .Next(最小值,最大值)
    Random rnd = new Random(DateTime.Now.Millisecond);Enumerable.Range(1, 100).OrderBy(Guid.NewGuid());  
     
      

  2.   

    将1到50放到list里。然后随机1-50,取得随机数后取list[随机数]位放到结果集里,将List[随机数]移除掉,然后再随机1-49的随机数继续做~~这个思路可不可以~
      

  3.   

    http://wenku.baidu.com/view/99abf9270722192e4536f6b8.html
      

  4.   

    随机排序一位数组
    public void RandSort(int[] _num)
            {
                for (int i = 0; i < _num.Length - 1; i++)
                {
                    Random rd = new Random();
                    int temp = rd.Next(i,_num.Length);
                    int tempNum = _num[i];
                    _num[i] = _num[temp];
                    _num[temp] = tempNum;
                    Thread.Sleep(20);//注意:引入命名空间:System.Threading;
                }
            }
      

  5.   


     int [] number = new int[50];
            for (int i = 1; i < 51; i++)
            {
                number[i - 1] = i;
            }
            Random ran = new Random();
            ran.Next(0, 50);
            List<int> intList = new List<int>();
            for (int i = intList.Count; i <= 50; i++)
            {
                int _number = ran.Next(0, 49);
                if (intList.Count == 0)
                {
                    intList.Add(number[_number]);
                }
                else
                {
                    if (!intList.Contains(number[_number]))
                        intList.Add(number[_number]);
                }
            }
            foreach (int item in intList)
            {
                this.div_1.InnerHtml += item + " , ";
            }
    这是我自己写的,具体的效率需要你自己完善一下
      

  6.   


    IEnumerable<int> squares = Enumerable.Range(1, 50);
    List<int> lst = new List<int>();
    foreach(int i in squares)
    {
       lst.Add(i);

    int[] rslt = new int[50]();
    Random rand = new Random();
    for(int i = 49; i>=0;i--)
    {
       int r = rand.Next(0, i);
       rslt[i] = lst[r];
    }
    foreach(int t in rslt)
    {
       console.writeline(t);
    }
      

  7.   

    下面的做法省掉了为数组初始化的50次循环Random rd = new Random();
    int[] a = new int[50];
    for(int i=0;i<a.Length;i++)
    {
        int index = rd.Next(a.Length);
        int tmp = a[index];
        a[index] = a[i];
        a[i] = tmp;
    }for(int i=0;i<a.Length;i++)
        Console.Write(a[i]==0?i:a[i]);
      

  8.   

    修正下错误,自己测试下,发现基本不费时...class Program
        {
            static void Main(string[] args)
            {
                DateTime dt1 = DateTime.Now;
                IEnumerable<int> squares = Enumerable.Range(1, 50);
                List<int> lst = new List<int>();
                foreach (int i in squares)
                {
                    lst.Add(i);
                }
                int[] rslt = new int[50];
                Random rand = new Random();
                for (int i = 49; i >= 0; i--)
                {
                    int r = rand.Next(0, i);
                    rslt[i] = lst[r];
                    lst.RemoveAt(r);
                }            
                Console.WriteLine("consume MilSec:" + (DateTime.Now - dt1).TotalMilliseconds.ToString());
                int line = 0;
                foreach (int t in rslt)
                {
                    Console.WriteLine(line++ + ":" + t.ToString());
                }
            }
        }
      

  9.   

    private static void sort()
    {
        int[] arr = new int[] { 1 to 50 };
        int[] keys = new int[arr.Length];
        Random random = new Random();
        for (int i = 0; i < keys.Length; i++)
        {
            keys[i] = random.Next();
        }    Array.Sort(keys, arr);  // arr 现在随机了}
      

  10.   

    如果是 net3.5+,用 linq 更方便var q = from c in arr orderby r.Next() select c;
      

  11.   

    大家都在自己设计算法,看来都不知道 Array.Sort 可以按照一个数组排序另一个数组