之前做了一个任务就是设计一个随机分配的功能,比如说,给包含16个人姓名的名单,将其随机分配成8个组,每组2个人。
代码如下:
package com.hehe;
public class ArrTest {
public static void main(String[] args) {
String arr[]={"小A","小B","小C","小D","小E","小F","小G","小H",
"小I","小J","小K","小L","小M","小N","小O","小P"};
String str;
int num=8;//分成8个组
int count=0;
for(int i=0;i<arr.length;i++){
int e=(int) Math.round((arr.length-1)*Math.random());
str=arr[e];
arr[e]=arr[arr.length-1];
arr[arr.length-1]=str;
}
for (int i = 0; i < arr.length; i++) {
count++;
System.out.print(arr[i]+" ");
if(count%(arr.length/num)==0){
System.out.println("");
}
}
}
}
输出结果为:
小A 小D
小C 小G
小E 小J
小I 小H
小B 小P
小K 小L
小M 小N
小O 小F
思路为,在字符串数组长度范围内生成一个随机数,将在该位置的值与数组最后一位交换,循环n次,原字符串数组的顺序就被打乱了,变成了随机的。
同理,如需生成随机数。例如生成100以内的随机数:
public class RandNumTest {
public static void main(String[] args) {
int sum=100;
int arr[]=new int[sum];
int numb;
int num=10;//分成num个组
int count=0;
for(int i=0;i<sum;i++){
arr[i]=i+1;
}
for(int i=0;i<sum;i++){
int e=(int) Math.round((arr.length-1)*Math.random());
numb=arr[e];
arr[e]=arr[arr.length-1];
arr[arr.length-1]=numb;
}
for (int i = 0; i < arr.length; i++) {
count++;
System.out.print(arr[i]+" ");
if(count%(arr.length/num)==0){
System.out.println("");
}
}
}
}
输出结果为:
57 2 3 4 93 97 42 83 33 39
47 11 17 14 35 16 63 59 19 40
21 22 99 24 25 26 27 84 48 70
31 32 30 34 9 36 53 38 6 94
41 58 43 44 100 46 5 64 49 50
51 52 7 54 55 56 91 12 76 29
8 28 60 75 80 66 77 68 69 86
71 67 73 23 15 13 37 78 79 74
81 10 1 20 85 82 87 88 89 61
95 18 45 92 90 96 72 98 65 62