我有這樣的需求:
我有100道試題,id是0到99,我想從中找出20道試題組成一個試卷,要求試題不重複,打亂順序:

/**
* 産生無重複的随機數 sumint:總樣本 (0....sumint-1)
* resultsum: 産生的随機數個數
*
* @return
*/
public static int[] randoms(int sumint, int resultsum) {
random r = new random();
int temp1, temp2;
//total sample
int send[] = new int[sumint];//0....(sumint-1)
for (int i = 0; i < sumint; i++) {
send[i] = i;
}
int len = send.length;//the length of the total sample
int returnvalue[] = new int[resultsum];//random number to return
for (int i = 0; i < resultsum; i++) {
temp1 = math.abs(r.nextint()) % len;
temp2 = send[temp1];
returnvalue[i] = temp2;
if (temp1 != len - 1) {
send[temp1] = send[len - 1];
send[len - 1] = temp2;
}
len--;
return returnvalue;
}
測試:
public static void printarray(int[] ints) {
for (int i = 0; i < ints.length; i++) {
system.out.print(ints[i]);
if (i < ints.length - 1) {
system.out.print(" ,");
}
system.out.println();
@test
public void test_randoms(){
printarray(systemutil.randoms(5, 3));