62,614
社区成员
发帖
与我相关
我的任务
分享
if (sum*3 < 100) { //如果最大分数都不能达到100,也是不合理的
System.out.println("error");
return;
}
public static void randomTest(int[] tests) {
if (tests == null || tests.length == 0) {
System.out.println("error");
return;
}
int sum = 0;
for (int i : tests) {
sum += i;
}
if (sum > 100) {
System.out.println("error");
return;
}
List<Integer> questions = new LinkedList<Integer>(); //题目
List<Integer> maxScore = new ArrayList<Integer>(); //最大分数
for (int i=0; i<sum; i++) {
questions.add(1);
}
int remain = 100 - sum;
while (remain > 0) { //剩余分数还有
int s = questions.remove((int)Math.random()*(questions.size()));
s++; //随机取一道题加1分
if (s == 3) { //如果分数最大,则排除下一次随机
maxScore.add(s);
} else { //否则继续参与下一次随机
questions.add(s);
}
remain--;
}
questions.addAll(maxScore); //获得所有题目
Collections.shuffle(questions); //随机排列所有题目
for (int i=0; i<sum; i++) { //打印题目
if (i < tests[0]) {
System.out.printf("select question, score[%d]\n", questions.get(i));
} else if (tests.length > 1 && i < tests[0] + tests[1]) {
System.out.printf("judgment question, score[%d]\n", questions.get(i));
} else {
System.out.printf("filling blank question, score[%d]\n", questions.get(i));
}
}
}