如何用Java生成十个不相等的随机数

Python018

如何用Java生成十个不相等的随机数,第1张

看了几个写法都不是很满意,强烈给楼主推荐我的程序,可以动态生成任意位的不重复随机数,并且范围可以自己控制。

import java.util.Random

import java.util.Vector

public class RanNum {

public Vector<Integer>a//定义一个向量,用于动态数组的存储

public void RandomNum(int n, int m){

//随机数的范围,可以生成10 个0-100的数,那么n=10,m=100.

Random ran = new Random()

a = new Vector<Integer>()

int ra = ran.nextInt(m)

a.add(ra) //先生成第一位随机数,后面就有的比较了。

for (int i = 0i <ni++) {

int r = ran.nextInt(m)

for (int j = 0j <ij++) {

if (a.get(j) == r) { //一旦发现有重复的数,立即结束循环,并重新执行第j步

i--

break

} else { //只要没有重复,那么就在第i个位置写入新数据。多次反复j遍

if (a.size() >i)

a.set(i, r)

else

a.add(r)

}

}

}

for (int i = 0i <ni++) {

System.out.print(a.get(i) + " ")

}

}

public static void main(String[] args){

RanNum RN = new RanNum()//生成新对象

RN.RandomNum(10, 10) //根据自己要求选择不重复随机数的个数和范围,范围>=个数

}

}

sum=(int)(Math.random()*33 + 1) 就是取一个int值 在1-33之间! 第一次的时候 a[0]-a[5] 都是0所以那个for一定不会进! 从第二次开始 a[0]-a[5]就开始有值了, 那么就拿sum值 用for循环 去和a[0]-a[5]依次进行比较, 如果发现有想同的,说明随机数重复了, 那么这一次寻找就不算数,就要进行i--的操作 同时 将标志值设为0,不入到a[]数组中~ 就这个意思了!

import

java.util.Random

public

class

Rand

{

public

static

void

main(String[]

args)

{

//产生随机数的类

Random

random=new

Random()

//装随机数的数组

10个整数

int[]

num=new

int[10]

//临时存放产生的一个随机数

int

ret=0

//定义标志位,flag=false代表数组中无重复数,true代表有重复数

boolean

flag=false

for

(int

i

=

0

i

<

num.length)

{

//产生随机数

ret=Math.abs(random.nextInt()%10)+1

//循环检测该随机数是否与数组中的数重复

for

(int

j

=

0

j

<

num.length

j++)

{

//如果存在重复,标志位变为true,并且break退出循环检测

if

(ret==num[j])

{

flag=true

break

}else

{

flag=false

}

}

//如果检测完无重复数据,则将产生的随机数存入数组中,并且数组下标计数加1

if

(!flag)

{

num[i]=ret

i++

}

}

//循环输出产生的随机数

for

(int

i

:

num)

{

System.out.print(i+"

")

}

}

}

输出:6

3

5

1

4

10

7

9

8

2

有不明白的请继续问