对试题的原始序号进行乱序处理,得到新的序号。
import java.util.HashSet;
/**
* 解决序号乱序问题
*
* 将试题序号和因子进行异或运算,得到新的序号。
* 以下代码可以验证,不同试题序号(1-300)和同一个因子进行异或运算后,得到的结果不会重复。
* 并且对因子的取值范围(0-199)的,全部进行了验证。这里注意,因子取值0,运算后序号不会变。
*/
public class HashTest {
public static void main(String[] args) {
//因子大小
int factorSize = 200;
//试题个数
int questionCount = 100;
HashSet[] setArr = new HashSet[factorSize];
for (int i = 0; i < setArr.length; i++) {
setArr[i] = new HashSet();
}
for (int i = 1; i <= questionCount; i++) {
for (int j = 0; j < factorSize; j++) {
int a = i ^ j;
setArr[j].add(a);
System.out.print(a + "\t");
}
System.out.println("");
}
for (int i = 0; i < setArr.length; i++) {
if (setArr[i].size() != questionCount) {
System.out.println(setArr[i].size());
}
}
}
}