本文章主要介绍了1-2 实现以下产生随机数的方法,修饰符为public static---》数据结构(Java版)(第4版)实验1:算法设计与分析,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

题目:

实现以下产生随机数的方法,修饰符为public static。

Integer randomDifferent(int n,int size)       // 返回n个互异的随机数,范围是0~size-1 
Integer randomSorted(int n,int size)          // 返回n个排序的随机数 
Integer randomDifferentSorted(int n,int size) // 返回n个互异的排序的随机数 

代码:

public class Test {
    
 
    public static void main(String[] args) {
    
 
        // 测试,查看结果 
        for (Integer i : randomDifferentSorted(10, 100)) {
    
            System.out.println(i); 
        } 
 
    } 
 
    /** 
     * 返回n个互异的随机数,范围是0~size-1 
     * 缺点:比较耗费时间 
     * 
     * @param n    随机数个数 
     * @param size 随机数大小限制值 
     * @return 装载随机数的数组 
     */ 
    public static Integer[] randomDifferent1(int n, int size) {
    
 
        Integer[] values = new Integer[n]; 
        int count = 0; 
        Integer value = 0; 
 
        while (count < n) {
    
 
            value = (int) (Math.random() * size); 
 
            boolean flag = true; 
 
            for (Integer j : values) {
    
 
                if (value.equals(j)) {
    
                    flag = false; 
                    break; 
                } 
            } 
 
            if (flag) {
    
                values[count] = value; 
                count++; 
            } 
        } 
 
        return values; 
    } 
 
    /** 
     * 返回n个互异的随机数,范围是0~size-1 
     * 优点:节省时间 
     * 
     * @param n    随机数个数 
     * @param size 随机数大小限制值 
     * @return 装载随机数的数组 
     */ 
    public static Integer[] randomDifferent2(int n, int size) {
    
 
        Set<Integer> set = new HashSet<>(); 
        Integer[] values = new Integer[n]; 
        Integer value = 0; 
 
        while (set.size() < n) {
    
            value = (int) (Math.random() * size); 
            set.add(value); 
        } 
 
        int count = 0; 
        for (Integer i : set) {
    
            values[count] = i; 
            count++; 
        } 
 
        return values; 
    } 
 
    /** 
     * 返回n个排序的随机数 
     * 
     * @param n    随机数个数 
     * @param size 随机数大小限制值 
     * @return 装载随机数的数组 
     */ 
    public static Integer[] randomSorted(int n, int size) {
    
 
        Integer[] values = new Integer[n]; 
        Integer value = 0; 
 
        for (int i = 0; i < n; i++) {
    
 
            value = (int) (Math.random() * size); 
 
            values[i] = value; 
 
        } 
 
        for (int i = 0; i < values.length - 1; i++) {
    
            for (int j = 0; j < values.length - 1; j++) {
    
                if (values[j].compareTo(values[j + 1]) > 0) {
    
                    Integer a = values[j]; 
                    values[j] = values[j + 1]; 
                    values[j + 1] = a; 
                } 
            } 
        } 
 
        return values; 
    } 
 
    /** 
     * 返回n个互异的排序的随机数 
     * 
     * @param n    随机数个数 
     * @param size 随机数大小限制值 
     * @return 装载随机数的数组 
     */ 
    public static Integer[] randomDifferentSorted(int n, int size) {
    
 
        Integer[] values = randomDifferent2(n, size); 
 
        for (int i = 0; i < values.length - 1; i++) {
    
            for (int j = 0; j < values.length - 1; j++) {
    
                if (values[j].compareTo(values[j + 1]) > 0) {
    
                    Integer a = values[j]; 
                    values[j] = values[j + 1]; 
                    values[j + 1] = a; 
                } 
            } 
        } 
 
        return values; 
    } 
 
} 

发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

阿里巴巴Java开发手册下载地址知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。