用java.lang.Math.random()语句,随机输出{size:自定义参数}个数不重复并且按顺序从小到大排列(冒泡排序)...

本文介绍了一个简单的Java程序,用于生成指定数量的不同随机数,并使用冒泡排序算法对其进行排序。程序首先通过Math.random()方法生成1到10之间的随机整数,确保数组中不包含重复的数字。
package com.test;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.lang.Integer;
/**
 * Created by Administrator on 2016/11/13.
 */
public class ClazzTest {

    public static void main(String [] args){
        sort(5);
    }

    //用Math.random()方法生产随机数
    public static int createNO(){
        //Math.random()生产随机数是0-1之间的小数,我这里生产1-10
        int ran = (int) (10*Math.random());
        return ran;
    }

    //向random数组中添加size个不同的元素(size<10)
    private  static int[] random(int size){
        int random[] = new int[size];
        //定义一个布尔值的类型来控制是否要往random中添加数据
        boolean flg = true;
        for (int i =0 ;i<size;i++){
            //while (true) 来控制数组中数值不一样
            while(true){
                //先获取一个随机数
                //每次都要先设置为true,不然,如果i<size时,出现以下重复就会一直死循环了
                flg = true;
                int ran  = createNO();
                for (int j=0;j<=i;j++){
                    //判断random 数组中是否有该元素
                    if(random[j]==ran){
                        flg = false;
                        break;
                    }
                }
                //将新的随机数添加进随机数组中
                if (flg == true){
                    random[i] = ran;
                    break;
                }

            }

        }

        return random;
    }

    public static void sort(int size){
        //调用random()方法获取数组
        int sortRandom[] = random(size);
        int  p;
        //冒泡排序
        for(int i = sortRandom.length-1;i>0;i--){
            for(int j=0;j<i;j++) {
                if (sortRandom[j]>sortRandom[j+1]){
                    p = sortRandom[j];
                    sortRandom[j] = sortRandom[j+1];
                    sortRandom[j+1] = p;
                }
            }
        }
        System.out.print("");
        for (int i = 0; i < sortRandom.length; i++) {
            System.out.println(sortRandom[i]);
        }
    }
}

 

转载于:https://www.cnblogs.com/HendSame-JMZ/p/6062168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值