word = words[Math.floor(Math.random() * words.length)];
この処理の直後で
①
console.log(Math.random() * words.length)
②
console.log(Math.floor(Math.random() * words.length))
を実行してみたのですが、
①では 0 以上~ 3 未満のランダムな数字が出てきます( Math.random
が 0 以上 1 未満のランダムな数値を出すのに対して配列の中の要素数が 3 つですので 3 ( length )を掛けているからと思っています。)
②では 0 ~ 2 の数字が出てきます。これは 0 ~ 2 番目の数字を選択するためだと思っています。
ただ①ででた結果が 0 ~ 1 の間の値だった時に②の結果が 2 であったり、2 ~ 3 未満の値が出たときに
②の結果が 1 だったりします。
また②で出た値番目の要素が選ばれていません。( 0 なのに Pink など)
Math.floor
は与えられた数値以下の最大の整数を返します。
とのことですが、
なぜ①ででた結果と②の結果が矛盾するのか?
なぜ②で出た結果番目の文字列が選ばれないのか?
教えていただけないでしょうか?
そもそも解釈が間違っていましたらすみません。
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?