【Java】在一定的范围内产生不同的随机数

首先,Java里面产生一个随机数很简单,不用像别的编程语言,如C,Javascript,asp等,只会产生一个0-1之间的随机小数,然后让你再通过一些数学算式去计算。能够随心所欲地易如反掌地产生一个随机数。记得引入java.util.*就行了。

比如如下的程序:

import java.util.*;public class Random_Test {public static void main(String[] args) {System.out.println(new Random().nextDouble());//能产生一个0-1的随机小数System.out.println(new Random().nextInt(10));//能产生一个大于或等于0,小于但不等于10的随机整数,,也就是个位数}}但是,要在一定范围中产生不同的随机数,这样的花样产生随机数表演就不是这么简单了,

之前我在《【ASP】在特定的范围内产生N个不同的随机数》(点击打开链接)曾经讨论过这个问题,但无奈ASP里面的代码杂糅,也就是vbscript,常常与html代码混在一起,只能给出了相应的算法,下面用具体的Java可执行的代码来说明一下这个程序:

import java.util.*;import java.io.*;public class Random_Different {public static void main(String[] args) throws IOException{System.out.print("输入产生的随机数范围,1到N,N=");int n=0;try{n=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());}catch(Exception e){System.out.println("N必须为正整数");return;}if(n<1){System.out.println("N必须为正数");return;}int randArr[]=new int[n];int i=0;while(i<n){int rand=(new Random().nextInt(n)+1);boolean isRandExist=false;for(int j=0;j<randArr.length;j++){if(randArr[j]==rand){isRandExist=true;break;}}if(isRandExist==false){randArr[i]=rand;i++;}}System.out.println(Arrays.toString(randArr));}}

思想还是上次的那个思想:

首先在1~n产生一个随机数X,然后对这个之前产生的数据进行遍历,判断是否存在有数等于这个新产生的随机数的,如果有,立flag,然后对之前的数据遍历完毕之后,判断flag是否立起来,如果是,就不添加这个随机数进数组,重新产生随机数并收起flag,再重新遍历已有的数据中是否已有这个随机数,如果否,就添加,直到n个数据产生完毕。最后输出这个n个数据。

具体的运行效果如下:

为了说明这个程序是健壮的,让电脑输入N,其中这个N从1-20,可以观察到,输出的数组中没有一个数是相同的,完成任务!

更多的数也是没有问题的,你设置N=二十万,都没有问题,这里由于本猿猴的机器太渣,设置个N=33说明效果。

明天是世上增值最快的一块土地,因它充满了希望

【Java】在一定的范围内产生不同的随机数

相关文章:

你感兴趣的文章:

标签云: