Math.random を console.log で確認したいのですが、意図した動作になりません

Math.random() は実行するたびに異なる乱数を返すので、確認のためには変数に格納してから見てみましょう。
2021年6月17日
ユーザー
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 は与えられた数値以下の最大の整数を返します。
とのことですが、
なぜ①ででた結果と②の結果が矛盾するのか?
なぜ②で出た結果番目の文字列が選ばれないのか?

教えていただけないでしょうか?
そもそも解釈が間違っていましたらすみません。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(3)