JAVA-乱数产生不重复问题
黄舟
黄舟 2017-04-17 17:33:44
[Java讨论组]

目前在写一提很老的题目但爬了文还是不太懂我的代码要怎么改不重复
并希望最好能以1个回圈解决当然2个回圈也可以其实我爬了很多文章还是不知道怎么下手(没有想法)
完全不会写我的理解能力其实很差
我只会产出乱数不会不重复也不太会用阵列有人会写嬷?

import java.util.*;
public class RandomMath{
public static void main(String[] args){

  System.out.println("請輸入數字");
  Scanner sc = new Scanner(System.in);
  int n = 10;
for (int i=0;i<n;i++){  
  int num = (int)(Math.random()*9)+(1); 
  System.out.println(num);  
}

}

}

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

如果可以交换的话, 那么可以这么写:

import java.util.* ;

public class Main
{
    public static void shuffle(int[] arr)
    {
        Random rand = new Random(System.currentTimeMillis()) ;
        for(int i=0 ; i<arr.length ; i++)
        {
            int pos = i + rand.nextInt(arr.length-i) ;
            swap(arr , i , pos) ;
        }
    }
    
    public static void swap(int[] arr , int i , int j)
    {
        int x = arr[i] ;
        arr[i] = arr[j] ;
        arr[j] = x ;
    }
    
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in) ;
        int n = sc.nextInt() ;
        int[] arr = new int[n] ;
        for(int i=0 ; i<n ; i++)
        {
            arr[i] = i ;
        }
        Main.shuffle(arr) ;
        System.out.println(Arrays.toString(arr)) ;
    }
}

但是题主题目明确说不能更换, 我没办法啦╮(╯▽╰)╭

迷茫
后来我试着这样也能!因为你的帮助有了想法
public static void main(String args[]) 
{ 
final int n = 8; 
int[] numbers = new int[n]; 

// builds 
for (int i = 0; i < numbers.length; i++) { 
numbers[i] = i + 1; 
} 

// generates 
for (int i = 0; i < numbers.length; i++) { 
int pos = new Random().nextInt(n); 
int temp = numbers[i]; 
numbers[i] = numbers[pos]; 
numbers[pos] = temp; 
} 

System.out.println(Arrays.toString(numbers)); 
}

or

import java.util.Scanner; 
import java.util.Random; 
public class perm { 
public static void main(String[] arg){ 
Scanner s = new Scanner(System.in); 
int N = s.nextInt(),i; 
int[] seq = new int[N]; 
for(i=N-1;i>=0;--i)seq[i]=1+i; 
for(i=0;i<N;++i) System.out.printf(" "+seq[i]); 
System.out.printf("\n random permutation \n"); 
Random rg = new Random(); 
for(i=N*N*N;0<i;--i) { 
int n0 = rg.nextInt(N); 
int n1 = rg.nextInt(N); 
if(n0 != n1) { 
int t = seq[n0]; 
seq[n0] = seq[n1]; 
seq[n1] = t; 
} 
} 
for(i=0;i<N;++i) System.out.printf(" "+seq[i]); 
System.out.printf("\n"); 
System.exit(0); 
} 
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号