【週刊ドットインストール】 考える力を養うための新クラス『データで学ぶアルゴリズム』を256timesでリリース!
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 番目の数字を選択するためだと思っています。
Math.random
ただ①ででた結果が 0 ~ 1 の間の値だった時に②の結果が 2 であったり、2 ~ 3 未満の値が出たときに ②の結果が 1 だったりします。 また②で出た値番目の要素が選ばれていません。( 0 なのに Pink など)
Math.floor は与えられた数値以下の最大の整数を返します。 とのことですが、 なぜ①ででた結果と②の結果が矛盾するのか? なぜ②で出た結果番目の文字列が選ばれないのか?
Math.floor
教えていただけないでしょうか? そもそも解釈が間違っていましたらすみません。
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
この処理の直後で
①
②
を実行してみたのですが、
①では 0 以上~ 3 未満のランダムな数字が出てきます(
Math.randomが 0 以上 1 未満のランダムな数値を出すのに対して配列の中の要素数が 3 つですので 3 ( length )を掛けているからと思っています。)②では 0 ~ 2 の数字が出てきます。これは 0 ~ 2 番目の数字を選択するためだと思っています。
ただ①ででた結果が 0 ~ 1 の間の値だった時に②の結果が 2 であったり、2 ~ 3 未満の値が出たときに
②の結果が 1 だったりします。
また②で出た値番目の要素が選ばれていません。( 0 なのに Pink など)
Math.floorは与えられた数値以下の最大の整数を返します。とのことですが、
なぜ①ででた結果と②の結果が矛盾するのか?
なぜ②で出た結果番目の文字列が選ばれないのか?
教えていただけないでしょうか?
そもそも解釈が間違っていましたらすみません。