質問するログイン新規登録

回答編集履歴

4

修正

2020/09/13 15:40

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -34,6 +34,6 @@
34
34
 
35
35
  ```JavaScript
36
36
  let rand1 = num1 > 1
37
- ? Math.floor(Math.random() * (10 ** (num1 - 1) * 9)) + 10 ** (num1 - 1);
37
+ ? Math.floor(Math.random() * (10 ** (num1 - 1) * 9)) + 10 ** (num1 - 1)
38
38
  : Math.floor(Math.random() * 10);
39
39
  ```

3

追記

2020/09/13 15:40

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -28,4 +28,12 @@
28
28
 
29
29
  ```JavaScript
30
30
  let rand1 = Math.floor(Math.random() * 10);
31
+ ```
32
+
33
+ これらを合わせると以下のようになります。三項条件演算子を使わず式を立てることもできますが、無理なことをするよりもこの方が可読性が高いでしょう。なお、以下の式は、num1 が 1 未満であった場合、1 であるとみなしたものになります。
34
+
35
+ ```JavaScript
36
+ let rand1 = num1 > 1
37
+ ? Math.floor(Math.random() * (10 ** (num1 - 1) * 9)) + 10 ** (num1 - 1);
38
+ : Math.floor(Math.random() * 10);
31
39
  ```

2

修正

2020/09/13 15:30

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -12,8 +12,8 @@
12
12
  + (10 ** (num1 - 1));
13
13
  ```
14
14
 
15
- 後半が打ち消しあってますね。
15
+ 後半が打ち消しあってますね。これが原因で、0 以上 10 ** num1 未満の乱数が出ています。次に対策ですが、
16
- 1 桁の数は 0 を含め 10 個
16
+ 1 桁の数は 1 から 9 の 9 個に 0 を含め 10 個
17
17
  2 桁の数は 10 から 99 の 90 個
18
18
  3 桁の数は 100 から 999 の 900 個
19
19
 

1

修正

2020/09/13 15:23

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  let rand1 = Math.floor( Math.random() * (10 ** num1) - (10 ** (num1 - 1))) + (10 ** (num1 - 1));
5
5
  ```
6
6
 
7
- これの形を変えると次のようになります。
7
+ これの形を変えると次のようになります。マイナスしている部分はカッコから出しても同じなので出します。
8
8
 
9
9
  ```JavaScript
10
10
  let rand1 = Math.floor( Math.random() * (10 ** num1))