実現したいこと
初歩的な質問で申し訳ございません。
javascriptの学習を始めたばかりの者です。
配列の値をランダムに取得する関数 Math.floor(Math.random() * array.length) で疑問を感じました。
Math.random()で0〜1の間の値がランダムに生成されるなら、Math.random()=1の場合にしか、インデックス番号の最大値が生成されないのではないでしょうか。
しかし、実際に使ってみると、極端に発生率が低いようには思えませんでした。
検索してもわからなかったため、どなたか教えていただけるとありがたく存じます。
また、現在MDN Web Docsで独学をしているのですが、入門者におすすめの教科書があればご教示いただけませんでしょうか。
> インデックス番号の最大値
は、array.length - 1 なのです。
0 から 1 と言っても、0 は出るけど 1 は出ません。
なので、それに array.length をかけると、0 以上 array.length 未満の数になります。
ご指摘いただきましてありがとうございます!
インデックス番号がarray.lengthだと勘違いしていました。
解決いたしました。
だったら array.length が出てこないことを疑問に思うんじゃないですかね。
Math.random() * array.length=インデックス番号 かつ 0<Math.random()<=1だと勘違いしていて、Math.random() * array.length ではインデックス番号の最大値が滅多に出現しないのではないかと疑問に思っていました。そもそもMath.random()では1が出ないのですね。
ご教示くださりありがとうございました!
> 現在MDN Web Docsで独学をしているのですが、
> 0<Math.random()<=1だと勘違いしていて、
ちゃんと読みましょう。
0<=Math.random()<1 ですね。
回答1件
あなたの回答
tips
プレビュー