码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-01-15 22:56:52      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

 1         // 方法一,用for循环,break跳出语句(不推荐,方法太笨,思路也不是很明确)
 2 
 3     public static void main(String[] args) {
 4 
 5         // 方法二 利用foreach和continue循环并跳出循环
 6 
 7         int[] c = new int[7];// 创建7个数的数列,这个地方可以不用定义数组
 8 
 9         Random ran1 = new Random(); // 实例化对象
10 
11         boolean bo = false; // 定义标识符来控制循环
12 
13         for (int i = 0; i < c.length; i++) { // 生成随机数列,并且一次性判断是不是有0和有没有相同的数
14 
15             // 利用遍历数组的方法判断是不是有重复的数字
16 
17             int t = ran1.nextInt(35);
18 
19             if (t == 0) { // 判断是不是有0这个数字
20 
21                 i--;
22                 continue;
23             }
24             for (int y : c) {
25 
26                 if (y == t) {
27 
28                     bo = true;
29                     break;
30                 }
31 
32             }
33             if (bo) {
34 
35                 i--;
36                 continue;
37             }
38 
39             c[i] = t;
40         }
41 
42         for (int x1 : c) {
43 
44             System.out.print(x1 + " ");
45         }
46         System.out.println();
47 
48         // 利用index来判断是不是有相同的数列(推荐)
49 
50         String str = "";
51 
52         for (int i = 0; i < 7; i++) {
53 
54             int t = ran1.nextInt(35);
55 
56             if (t == 0) { // 判断是不是有0这个数字
57 
58                 i--;
59                 continue;
60             }
61             if (str.indexOf(t + "") >= 0) { // 判断是不是有重复的数字
62 
63                 i--;
64                 continue;
65             }
66             str = str + t + " ";
67         }
68         System.out.println(str);
69 
70         System.out.println("------------------");
71 
72         // 利用replace替换,这个方法虽然简单但是不是很好,每个数不是很随机了,还没有想到处理的方法
73 
74         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"
75 
76                 + " 26 27 28 29 30 31 32 33 34 35";// 这种方法尽量不要用显得太Low了
77 
78         Random r = new Random();
79 
80         for (int i = 0; i < 100; i++) {
81             int t1 = r.nextInt(36);
82 
83             if (t1 <= 9) {
84 
85                 s = s.replace("0" + t1 + " ", "");
86             } else {
87 
88                 s = s.replace(t1 + " ", "");
89             }
90 
91             if (s.length() <= 22) {
92 
93                 System.out.println(s);
94                 break;
95 
96             }
97             //还有其他的方法,还没有整理

 

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

标签:

原文地址:http://www.cnblogs.com/zhengfengyun/p/5134374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!