求大家帮忙!!!!!题目是:产生一个int数组,长度为100,向其中随机插入1-100,不能重复~

解决方案 »

  1.   

    public class RandomInsert { /**
     * @param args
     */
    public static void main(String[] args) {
    int[] arr=new int[100];
    boolean[] flag=new boolean[100];
    int i=0;
    while(true)
    {
    int num=(int)(Math.random()*100);
    if(flag[num]==false)
    {
    arr[i]=num;
    flag[num]=true;
    i++;
    System.out.print(num+" ");
    if(i==99)
    {
    break;
    }
    }
    }

    }}
      

  2.   


    public class RandomInsert { /**
     * @param args
     */
    public static void main(String[] args) {
    int[] arr=new int[100];
    boolean[] flag=new boolean[100];
    int i=0;
    while(true)
    {
    int num=(int)(Math.random()*100);
    if(flag[num]==false)
    {
    arr[i]=num;
    flag[num]=true;
    i++;
    System.out.print(num+" ");
    if(i==99)
    {
    break;
    }
    }
    }
    System.out.print(i+"");

    }}
      

  3.   

    public class ArraysRandomTest {
    public static void Test() {
    int n = 100;
    int a[] = new int[n];
    Random r = new Random();
    List list = new ArrayList();
    Integer in;
    while (list.size() < n) {
    in = Integer.valueOf(r.nextInt(n) + 1);//产生随机数是0--19所以加1, 把产生随机数放到in里
    if (!list.contains(in)) {// 判断重复
    list.add(in);// 不重复,放到list里
    }
    } for (int i = 0; i < n; i++) { a[i] = ((Integer) (list.get(i))).intValue();// 转换成int
    }
    for (int i = 0; i < n; i++) {// 输出数组
    System.out.print(a[i] + " ");
    }
    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArraysRandomTest.Test(); }}
      

  4.   

    public class RandomInsert { /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
    int[] arr=new int[100]; 
    boolean[] flag=new boolean[100]; 
    int i=0; 
    while(true) { 
    int num=(int)(Math.random()*100); 
    if(flag[num]==false) { 
    arr[i]=num; 
    flag[num]=true; 
    i++; 
    //System.out.print(num+" "); 
    if(i==99) { break; } 

    }
    for(int l=0; l<arr.length; l++){
    for(int j=0; j<arr.length-l-1; j++){
    if(arr[j]<arr[j+1]){
    int temp;
    temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
    }
    }
    }

    for(int k=0; k<arr.length; k++){
    System.out.print(arr[k] + "\t");
    }
    } }
      

  5.   

    import java.util.*;
    import java.io.*;public class TestArray{
       public static void main(String[] args){
         int[] a=new int[100];
         Random random=new Random();
         int temp,k;
         for(int i=0;i<a.length;i++){
         a[i]=i+1; 
         }
         for(int i=99;i>0;i--){
         k=random.nextInt(i);
         temp=a[k];
         a[k]=a[i];
         a[i]=temp;
         }
         for(int i=0;i<a.length;i++){
         if(i%10==0){
         System.out.println("");
         }
         System.out.print(" "+a[i]);
         }
        }
    }
      

  6.   


    public class Random100 {public static void main(String[] args) {
        int[] arr=new int[100];
        List<Integer> iList = new ArrayList<Integer>();
        //得到100个数
        for (int i = 1;i <= 100;i++) {
            iList.add(Integer.valueOf(i));
        }
        int i = 0;
        while(iList.getSize() > 0)    //如果list里面还有数据
        {
            int num=(int)(Math.random()*iList.getSize());//产生一个0~list长度-1的随机数,并以其为index取出数来
            arr[i] = iList.get(num);
            i++;
            iList.remove(num);    //从list把该数删除
        }    for (int i = 0:i < 100;i++) {
            System.out.println("" + arr[i]);
        }
    }
      

  7.   

    public static void main(String[] args) {
    Set set=new HashSet();
    for(int i=0; i<100;i++){
     set.add(i); 
    }
    int s[]=new int[100];
    Iterator it=set.iterator();
    int i=0;
    while(it.hasNext()){
    s[i]=(Integer)it.next();
    i++;
    }

    for(int a=0;a<100;a++){
    System.out.println(s[a]);
    }
    }
      

  8.   

    我这样想的考虑到不能重复用HashMap
    键为随机数值就无所谓啦
    写一个死循环
    while(true){}
    内部判断map.size()==100的话break循环
    然后把map的key,放到数组里
      

  9.   

    不好意思漏写了我这样想的考虑到不能重复用
    键为随机数值就无所谓啦-暂定String吧
    HashMap<Integer,String> map = new HashMap<Integer,String>();
    写一个死循环 
    while(true){ 
          if(map.size()==100)
                 break;
           map.put(随机数,"");
    }
    然后把map的key,放到数组里以下就略了
      

  10.   

    mport java.util.Random;public class RandomDemo {
    public static void main(String[] args) { // 题目是:产生一个int数组,长度为100,向其中随机插入1-100,
    // 不能重复~
    Random random = new Random();
    int[] a = new int[100];
    int k = 0;
    for (int i = 0; i < a.length; i++) {
    while (true) {
    boolean bool = true;
    int c = random.nextInt(100) + 1;
    for (int n = 0; n <= k; n++) {
    if (c == a[n]) {
    bool = false;
    break;
    }
    }
    if (bool) {
    a[k] = c;
    k++;
    break;
    }
    }
    }
    for (int h = 0; h < a.length; h++) {
    System.out.print(a[h] + " ");
    if ((h + 1) % 10 == 0)
    System.out.println();
    }
    }}
      

  11.   


    //初始1-100的数据
    ArrayList<Integer> list = new ArrayList<Integer>();
    for(int i=1; i<=100; i++) {
    list.add(i);
    }
    //随机填充数组
    int[] arr = new int[100];
    for(int i=0; i<100; i++) {
    arr[i] = list.remove((int)(Math.random()*list.size()));
    }
    //打印数组
    for(int e : arr) {
    System.out.print(e + " ");
    }
    System.out.println();
      

  12.   

    其实这个问题只用数组就够了!个人觉得用array 应该比arraylist效率高一些!思路:
    1、定义一个数组int[] a ={1,2,3...99,100} 和目标数组int[] b长度也为1002、随机将数组a中一个元素赋值给目标数组b[0]3、将已赋值的a中元素a【i】和a【99】交换4、将a【1】到啊【98】间的数组赋值给b【1】5、重复3、4直到a的值被全部赋值完 最后得到随机需求中的B数组
    今天太晚了 呵呵 明天上午提供源代码
      

  13.   

    代码出来了!
    请指正import java.util.*;
    public class RandomInsert {

    static int[] b=new int[100];
    public static void main(String[] args) {

    int[] a =new int[100];
    for(int i=1;i<=100;i++){
    a[i-1]=i;
    }

    for(int i=0;i<100;i++){

    Random rand=new Random();
    int myRandom=rand.nextInt(100-i);  //逐渐缩小随机数的范围

           //System.out.println(myRandom);  测试myRandom是否正常输出随即数
    b[i]=a[myRandom];

    int temp=a[(a.length-1)-i];  //一下三行作用把已赋值的数组元素,全部放到数组的末端
    a[(a.length-1)-i]=a[myRandom];
    a[myRandom]=temp;

    }

    for(int i=0;i<100;i++) //输出b,看最后结果
    {
    System.out.println(b[i]);
    }


    System.out.println("看对数组排序后的结果"); //一下为测试代码
    Arrays.sort(b);//对数组进行升序排序,让结果看的更明白些

    for(int i=0;i<100;i++) //输出b,看最后结果
    {
    System.out.println(b[i]);
    }

    }}
      

  14.   

    随即数可以用到 Math.random() 函数。不可重复用到 集合 Set 就可以了。解决这两个问题就 OK 了。
      

  15.   

    public class newRandom { public static void main(String[] args) {
    int[] iCheck = new int[100];
    int[] iValue = new int[100];
    int cnt = 0; while (cnt < 100) {
    int iRandom = (int) (Math.random() * 100);
    if (iCheck[iRandom] == 0) {
    iCheck[iRandom]++;
    iValue[cnt] = iRandom + 1;
    cnt++;
    }
    } for (int i = 0; i < 100; i++)
    if ((i+1) % 10 == 0) {
    System.out.print("  " + iValue[i] + "  ");
    System.out.println();
    } else {
    System.out.print("  " + iValue[i] + "  ");
    } }
    }
      

  16.   


    public  int[] getArray(){
    int []array=new int[100];
    int []tempArray=new int[101];
    int tempValue=0;
    int index=0;
    while(index<100){
    tempValue=(int) (Math.random() * 100); 
    if(tempArray[tempValue]==0){
    tempArray[tempValue]=1;
    array[index]=tempValue;
    ++index;
    }
    }
    return array;
    }
      

  17.   

    提供一种算法
    具体如下:
    1:初始化一个数组a[] 并且值依次为 1---100;
    2:循环从0开始到99 变量为i 
    3:在循环体里面 随机生成一个1--100的数标记为j 将a[i]与a[j]交换算法是时间复杂度为O(100)空间复杂度为 1;具体实现很简单,还是自己动手较好!
      

  18.   


    package collections;import java.util.HashSet;public class RandomNumber { /**
     * @param args
     */
    public static void main(String[] args) {
    for(Integer element: getResult(100)){
    System.out.println(element);
    }
    } private static Integer[] getResult(int size) {
    HashSet<Integer> dataSet = new HashSet<Integer>();
    for (int i = 1; i < size + 1; i++) {
    dataSet.add(i);
    }
    return dataSet.toArray(new Integer[0]);
    }}
    这个不够乱,不过也可以考虑哦
      

  19.   


    public static int[] getArray(){
    int result[]=new int[100];
    for(int i=0;i<100;i++)result[i]=i+1;
    int j;
    int temp;
    for(int i=0;i<100;i++){
    j=(int) (Math.random() * 100); 
    temp=result[i];
    result[i]=result[j];
    result[j]=temp;
    }
    return result;
    }
      

  20.   

    欢迎加入j2EE技术交流群,我们的群号70741607
       我们期待你的加盟.
      

  21.   

    c++具体实现
    #include <iostream> 
    #include <cmath> using namespace std;
    void f(){
        int result[100];
            for(int i=0;i<100;i++)result[i]=i+1;
            int j;
            int temp;
            for(int i=0;i<100;i++){
                j=(int) rand()%100; 
                temp=result[i];
                result[i]=result[j];
                result[j]=temp;
            }
    for(int i=0;i<100;i++)
    cout<<result[i]<<ends;
    }
    int main()
    {
          f();
          system("pause");
          return 0;
    }