回答編集履歴

1

補足を追加

2020/07/22 13:29

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -3,3 +3,85 @@
3
3
 
4
4
 
5
5
  シャッフルには、有名なアルゴリズムがあるので「フィッシャー・イエーツ」(Fisher-Yates)で検索してください。
6
+
7
+
8
+
9
+ 追加分: こんな感じの「0から問題数-1までの整数値がシャッフルされた配列XXX」を開始時に作成しておき、出題時には「配列XXXの残り問題数(count)をインデックスとする要素から整数値を取得し、それを問題や解答のインデックスとして使う」ようにすればいいのでは。
10
+
11
+
12
+
13
+ ```Java
14
+
15
+ import java.util.Random;
16
+
17
+
18
+
19
+ public class shufflecheck {
20
+
21
+ public static void main(String args[]) {
22
+
23
+ int n = 11;
24
+
25
+
26
+
27
+ int[] indexes = getShuffledIndexes(n);
28
+
29
+
30
+
31
+ for (int i = 0; i < n - 1; i++) {
32
+
33
+ System.out.print(indexes[i] + ", ");
34
+
35
+ }
36
+
37
+ System.out.println(indexes[n - 1]);
38
+
39
+
40
+
41
+ }
42
+
43
+
44
+
45
+ public static int[] getShuffledIndexes(int n) {
46
+
47
+ if (n <= 0) {
48
+
49
+ return null;
50
+
51
+ }
52
+
53
+ int[] indexes = new int[n];
54
+
55
+ for (int i = 0; i < n; i++) {
56
+
57
+ indexes[i] = i;
58
+
59
+ }
60
+
61
+
62
+
63
+ Random rand = new Random();
64
+
65
+
66
+
67
+ for (int i = n - 1; i >= 1; i--) {
68
+
69
+ int j = rand.nextInt(i + 1);
70
+
71
+ int tmp = indexes[j];
72
+
73
+ indexes[j] = indexes[i];
74
+
75
+ indexes[i] = tmp;
76
+
77
+ }
78
+
79
+
80
+
81
+ return indexes;
82
+
83
+ }
84
+
85
+ }
86
+
87
+ ```