java如何生成一组随机的不重复的数列?

发布网友 发布时间:2022-04-23 03:33

我来回答

5个回答

热心网友 时间:2023-09-10 20:43

把源数据放到数组中,然后循环随机交换这个数组元素的位置就可以了
int[]aa = {1,2,5,6,8,9,7};
Random r = new Random();
for(int i=0;i<100;i++)
{
int index = r.nextInt(aa.length);
int temp = aa[0];
aa[0] = aa[index];
aa[index] = temp;
}

热心网友 时间:2023-09-10 20:44

import java.util.Random;

public class MainClass {

/**
 * Author:kejisoft
 * @param args
 */
public static void main(String[] args) {
boolean[] numberList={true,true,true,true,true,true,true,true,true,true};
// 0    1    2    3    4    5    6    7    8   9
StringBuilder rndNumber=new StringBuilder();//存放随机数生成
int numberLength=6;//需要生成多长的数字?最多9位数
int i=numberLength;//长度计数器
long result;//int result;
Random rnd=new Random();
while(i>0){
int rndOffset=rnd.nextInt(10);
if(rndOffset==0 && i==numberLength) continue;//解决新数列中第一位可能是0的bug
if(numberList[rndOffset]){
rndNumber.append(rndOffset);//添加到新数列
numberList[rndOffset]=false;//从源数列中移除已使用的数字
i--;//距离我们需要的长度又接近了1
}
}
result=Long.valueOf(rndNumber.toString());//Integer.valueOf(rndNumber.toString());
System.out.println(result);//输出
}
}
写的烂了点,还可以看看。其实也是在集合中演变的,原先我想用ArrayList,但后来考虑到更简单的直接用布尔数组了。

热心网友 时间:2023-09-10 20:44

package com.tset;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class arraydemo {
    public static void main(String[] args) {
        String format = "yyyyMMddHHmmss";
        System.out.println(DateToStr(new Date(), format));
        
    }
    
       //时间转换到字符串
    public static String DateToStr(Date date,String formatStr) {
       SimpleDateFormat format = new SimpleDateFormat(formatStr);
       String str = format.format(date);
       return str;
    }
}

是这条数据不重复还是数据里边不存在重复的数据啊?

package com.tset;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

public class arraydemo {
    public static void main(String[] args) {
        String format = "yyyyMMddHHmmss";
        
        //两种产生随机数都可以
        //String str = DateToStr(new Date(), format);
        Random ram = new Random();
        String str = Integer.toString(ram.nextInt());
        
        char[] ch = str.toCharArray();
        List list = new ArrayList();
        for (int i = 0; i < ch.length; i++) {
            list.add(ch[i]);
        }
        for (int i = 0; i < list.size(); i++) {
            for (int j= 0; j < list.size(); j++) {
                if(list.get(i).equals(list.get(j))){
                    list.remove(i);
                }
            }
        }
        String strs = "";
        for (int i = 0; i < list.size(); i++) {
            strs +=list.get(i);
        }
        System.out.println(strs);
    }
    
       //时间转换到字符串
    public static String DateToStr(Date date,String formatStr) {
       SimpleDateFormat format = new SimpleDateFormat(formatStr);
       String str = format.format(date);
       return str;
    }
}   这个是一条数据中产生不会重复数字

热心网友 时间:2023-09-10 20:45

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.print("输入取值数:");
int c = sc.nextInt();
List<Integer> list = new ArrayList<Integer>();
System.out.println();
System.out.print("输入取值范围:");
Random random = new Random();
int num = sc.nextInt();
int i = 0,r;
boolean flag = true;
while(i<c){
r = random.nextInt(num+1);
for(int j=0;j<list.size();j++){
if(r==list.get(j)){
flag = false;
continue;
}
}
if(flag){
list.add(r);
i++;
}
flag = true;
}
Collections.shuffle(list);
System.out.println("结果为:"+list.toString());
}

个人感觉数组没集合好用,何况乱序Collections自带,方便很多

热心网友 时间:2023-09-10 20:45

生成了的随机数保存在一个数组中,在循环数组判断,如果有些数则移除。。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com