回答編集履歴
1
手順説明部に番号リストを使用するよう修正
answer
CHANGED
@@ -7,14 +7,13 @@
|
|
7
7
|
今回扱う4桁の数字は、桁ごとに一致しているかしていないかを調べるのが主な処理になると思いますので、UInt32で扱うのではなく、0-9の数字4個で構成される配列として定義した方が後でいろいろ処理しやすいと思います。
|
8
8
|
|
9
9
|
そして、同じ数字を持たない4個の数字を生成する方法ですが、以下のように処理するのが、無駄な重複リトライをしなくてすむのでスマートだと思います。
|
10
|
-
|
10
|
+
0. まず、0-9までの数字が順番に入っている10個の要素を持つ配列(numbers)を作成します。
|
11
|
-
|
11
|
+
0. 0-9の範囲のランダム値(r)を取得します。
|
12
|
-
|
12
|
+
0. numbersのr番目の要素を1個目の数字とし、その要素をnumbersから削除します。(残る要素数は9個です)
|
13
|
-
|
13
|
+
0. 0-8の範囲のランダム値(r)を取得します。
|
14
|
-
|
14
|
+
0. numbersのr番目の要素を2個目の数字とし、その要素をnumbersから削除します。(残る要素数は8個です)
|
15
|
-
|
15
|
+
0. 0-7の範囲のランダム値(r)を取得します。
|
16
|
-
|
16
|
+
0. numbersのr番目の要素を3個目の数字とし、その要素をnumbersから削除します。(残る要素数は7個です)
|
17
|
-
|
17
|
+
0. 0-6の範囲のランダム値(r)を取得します。
|
18
|
-
|
18
|
+
0. numbersのr番目の要素を4個目の数字とします。
|
19
|
-
|
20
19
|
数字を4個取り出せばいいだけなので、わかりやすいよう1個ずつ順番に全部書きましたが、やりたいことがわかれば4回ループで処理すれば簡潔に記述できます。
|