A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

首先自我介绍下,我是刚接触JAVA,学了大概半个月,没什么基础,也不知道发什么,所以就随便发发,希望嘴下留情,错了帮我纠正就好!相信很多跟我一样零基础的刚接触到Random块会碰到这样的一个问题:Random可以随机产生一个数,那么怎么才能让它产生的数字永远不会重复呢?如果不会重复,就可以解决前期所遇到的很多问题。那么怎么做呢?代码如下,如果有没接触到集合的,可以在最下面看数组的。package day05Plus;
import java.util.ArrayList;
import java.util.Random;
public class getRandom {

    public static void main(String[] args) {
// 生成 [0-n) 个不重复的随机数
// list 用来保存这些随机数
        ArrayList list = new ArrayList();
        int n = 10;
        Random rand = new Random();
        boolean[] bool = new boolean[n];//
        int num = 0;
        for (int i = 0; i < n; i++) {
            do {
// 如果产生的数相同继续循环
                num = rand.nextInt(n);
            } while (bool[num]);
            bool[num] = true;
            list.add(num);
        }
        System.out.println(list);
    }
}
//这个思想是这样的,用do...while循环,在do的内部随机产生一个数字num,用num当作索引值放到布尔表达式中,第一次出现一定不会循环,因为默认值肯定是false。所以肯定会往下执行,然后我们给这个索引值赋值为true;这样做的目的是如果下次随机产生又是这个数,我们可以让他继续循环,直到不再重复,最后把这个值当作一个数放到集合当中。作为一个没有基础的人,我觉得这个逻辑很有意思,所以发出来给同养基础的人看看交流交流,下面附上数组的
public static void main(String[] args) {
// 生成 [0-n) 个不重复的随机数
// list 用来保存这些随机数
        int[] arr = new int[10];
        int n = 10;
        Random rand = new Random();
        boolean[] bool = new boolean[n];
        int num = 0;
        int index = 0;
        for (int i = 0; i < n; i++) {
            do {
// 如果产生的数相同继续循环
                num = rand.nextInt(n);
            } while (bool[num]);
            bool[num] = true;
            arr[index] = num;
            index++;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr + " ");
        }
    }





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马