JAVA学习笔记(1)_区间内生成不重复的随机数

来源:互联网 发布:欧立讯写频软件 编辑:程序博客网 时间:2024/06/05 20:31

JAVA学习笔记(1)_区间内生成不重复的随机数

java初学者——狗蛋儿

要求:1、使用Random,在[100,200]区间内生成十个不重复随机数

      2、将生成的随机数存放在数组

      3、进行排序

      4、不使用Set

先贴代码:

import java.util.Random;

public class Demo_Random
{


/**
* 随机数
* 100~200之间的10个不重复的随机数,并进行升序或降序排序

* nextInt(a):[0,a)
*/
public static void main(String[] args) 
{

//创建对象
Demo_Random d = new Demo_Random();


//储存排序结果的数组
int[] result = new int[10];

//临时数组,用于存放随机数
int[] temp = new int[10];

//取值范围100~200
int min = 100;
int max = 200;
//计数器:用于记录已经生成了多少个(有效)随机数
   int count = 0;
//while、for循环嵌套:生成10个不重复的随机数
while(count < 10)
{
//随机数生成器(自定义)
int num = d.randomBuilder(min, max);
boolean flag = true;//开关变量,true:有效
for(int i = 0;i < 10;i++)
{
if(num == temp[i])
{
flag = false;//count值不变
break;//跳出for循环,count不变,重新生成随机数
}
}
if(flag)//如果为有效随机数,则写入临时数组
{
temp[count] = num;
count++;
}
}
//随机数是否重复
for(int i = 0;i < 10;i++)
{
System.out.print(temp[i] + "\t");
}

System.out.println();

//进行冒泡排序
result = d.bubble(temp);
for(int i = 0;i < 10;i++)
{
System.out.print(result[i] + "\t");
}

}//main


//随机数生成器
private int randomBuilder(int min,int max)
{
Random r = new Random();
//nextInt(int n)生成的数在[0,n)区间内
//若要取100~200之间的随机数,则先生成[0,101)内的数再加上100
int num = r.nextInt(max - min + 1) + min;
return num;
}

//冒泡排序
private int[] bubble(int b[]) 
{
int temp = 0;
for(int i = 0;i < 9;i++)
{
for(int j = 0;j < 9;j++)
{
if(b[j] > b[j + 1])
{
temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
}
}
}
return b;
}

}//class


我认为这是最容易理解也是最容易想到的方法,使用双重循环判断新生成的随机数是否出现过,需要注意的是外层循环是用while而不是for,具体原因会在另一篇文章中讲到吐舌头


注:本人狗蛋儿,Java初学者,技术渣一枚,如果文章中有什么不对的地方或者您有更好的解决方案,欢迎留言进行交流~么么哒~~