zoukankan      html  css  js  c++  java
  • 经典算法题随机从连续的100个不重复数中取出100个不重复随机数

    这道题目很值得思考,以下分别用三种方式搞定,第三种方式拒绝使用contains方法。

    方法一:

    int[] arr = new int[100];
    // while (true)
    // {
    // Random rand = new Random();

    // for (int j = 0; j < 100; j++)
    // {
    // int m = rand.Next(1, 200);

    // if (!arr.Contains(m))
    // {
    // arr[j] = m;
    // }
    // else
    // j--;
    // }
    // break;

    方法一变形:

    int[] arr = new int[100];
    Random rnd = new Random ();

    for (int i = 0; i < 100; )
    {
    int j= rnd.Next(1, 101);
    if (arr.Contains(j) == false )
    {
    arr[i] = j;
    i++;
    }

    }

    for (int k = 0; k < 100; k++)
    {
    Console.Write(arr[k] + " ");
    }

    方法二:

    //int[] arr = new int[100];
    //ArrayList list = new ArrayList();
    //Random rand = new Random();
    //while (list.Count < 100)
    //{
    // int num = rand.Next(1, 105);
    // if (!list.Contains(num))
    // list.Add(num);
    //}
    //for (int i = 0; i < 100; i++)
    // arr[i] = (int)list[i];

    方法三:

    int[] arr1 = new int[100];
    int[] arr2 = new int[100];
    for (int i = 0; i < 100; i++)
    arr1[i] = i;

    Random rand=new Random();
    int end=100-1;
    for(int i=0;i<total;i++)
    {
    int num= rand.Next(0, end+1);
    arr2[i] = arr1[num];
    arr2[num] = arr2[end];
    end--;
    }

  • 相关阅读:
    Orleans 2 实例
    Linux基础1 目录和文件系统
    C#中的异步多线程补充1
    委托的小例子(基本委托,匿名方法,lambda)
    Orleans 1 基本概念
    WPF10 Binding-2
    WPF9 Binding-1
    WPF8 UI布局
    WPF7 布局控件
    软工总结
  • 原文地址:https://www.cnblogs.com/zhanying/p/4063802.html
Copyright © 2011-2022 走看看