質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

565閲覧

Math.floor(Math.random() * array.length)でなぜ配列の最大値が生成されるのかわかりません

iaunrkw

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2023/03/21 06:42

実現したいこと

初歩的な質問で申し訳ございません。
javascriptの学習を始めたばかりの者です。

配列の値をランダムに取得する関数 Math.floor(Math.random() * array.length) で疑問を感じました。
Math.random()で0〜1の間の値がランダムに生成されるなら、Math.random()=1の場合にしか、インデックス番号の最大値が生成されないのではないでしょうか。
しかし、実際に使ってみると、極端に発生率が低いようには思えませんでした。
検索してもわからなかったため、どなたか教えていただけるとありがたく存じます。

また、現在MDN Web Docsで独学をしているのですが、入門者におすすめの教科書があればご教示いただけませんでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2023/03/21 06:50

> インデックス番号の最大値 は、array.length - 1 なのです。
Zuishin

2023/03/21 07:05

0 から 1 と言っても、0 は出るけど 1 は出ません。 なので、それに array.length をかけると、0 以上 array.length 未満の数になります。
iaunrkw

2023/03/21 07:37

ご指摘いただきましてありがとうございます! インデックス番号がarray.lengthだと勘違いしていました。 解決いたしました。
Zuishin

2023/03/21 07:39

だったら array.length が出てこないことを疑問に思うんじゃないですかね。
iaunrkw

2023/03/21 07:49

Math.random() * array.length=インデックス番号 かつ 0<Math.random()<=1だと勘違いしていて、Math.random() * array.length ではインデックス番号の最大値が滅多に出現しないのではないかと疑問に思っていました。そもそもMath.random()では1が出ないのですね。 ご教示くださりありがとうございました!
otn

2023/03/21 10:02

> 現在MDN Web Docsで独学をしているのですが、 > 0<Math.random()<=1だと勘違いしていて、 ちゃんと読みましょう。 0<=Math.random()<1 ですね。
guest

回答1

0

自己解決

インデックス番号がarray.lengthだと勘違いしていました。
ご指摘いただきまして誠にありがとうございます!
精進します。

投稿2023/03/21 07:38

iaunrkw

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問