JAVA/ 将任意数组内的值乱序(生成随机数)的一种方法

来源:互联网 发布:手机淘宝秒杀软件下载 编辑:程序博客网 时间:2024/06/01 22:05

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





0 0
原创粉丝点击