之前做了一个任务就是设计一个随机分配的功能,比如说,给包含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
