您的位置:首页 > 其它

生成不重复的随机数(待完善)

2016-01-15 20:08 393 查看
// 方法一,用for循环,break跳出语句(不推荐,方法太笨,思路也不是很明确)

public static void main(String[] args) {

// 方法二 利用foreach和continue循环并跳出循环

int[] c = new int[7];// 创建7个数的数列,这个地方可以不用定义数组

Random ran1 = new Random(); // 实例化对象

boolean bo = false; // 定义标识符来控制循环

for (int i = 0; i < c.length; i++) { // 生成随机数列,并且一次性判断是不是有0和有没有相同的数

// 利用遍历数组的方法判断是不是有重复的数字

int t = ran1.nextInt(35);

if (t == 0) { // 判断是不是有0这个数字

i--;
continue;
}
for (int y : c) {

if (y == t) {

bo = true;
break;
}

}
if (bo) {

i--;
continue;
}

c[i] = t;
}

for (int x1 : c) {

System.out.print(x1 + " ");
}
System.out.println();

// 利用index来判断是不是有相同的数列(推荐)

String str = "";

for (int i = 0; i < 7; i++) {

int t = ran1.nextInt(35);

if (t == 0) { // 判断是不是有0这个数字

i--;
continue;
}
if (str.indexOf(t + "") >= 0) { // 判断是不是有重复的数字

i--;
continue;
}
str = str + t + " ";
}
System.out.println(str);

System.out.println("------------------");

// 利用replace替换,这个方法虽然简单但是不是很好,每个数不是很随机了,还没有想到处理的方法

String s = "01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25"

+ " 26 27 28 29 30 31 32 33 34 35";// 这种方法尽量不要用显得太Low了

Random r = new Random();

for (int i = 0; i < 100; i++) {
int t1 = r.nextInt(36);

if (t1 <= 9) {

s = s.replace("0" + t1 + " ", "");
} else {

s = s.replace(t1 + " ", "");
}

if (s.length() <= 22) {

System.out.println(s);
break;

}
//还有其他的方法,还没有整理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: