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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1583閲覧

JavaScriptのシャッフル

GoodDay

総合スコア64

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/08/12 09:37

編集2019/08/12 09:52

JavaScriptによる配列の要素のシャッフル
以下のようなフィッシャー・イェーツというJavaScriptによるシャッフル法を見かけました。

JavaScript

1①a = [1,2,3,4,5,6,7,8,9]; 23//取り出す範囲(箱の中)を末尾から狭める繰り返し 4for(i = a.length -1;i>0;i--){ 5//乱数生成を使ってランダムに取り出す値を決める 6⑥ r = Math.floor(Math.random()*(i+1)); 7//取り出した値と箱の外の先頭の値を交換する 8⑧ tmp = a[i]; 9⑨ a[i] = a[r]; 10⑩ a[r] = tmp; 11} 12//結果を表示 13console.log(a);

わからないこと
6行目のi+1は何を意味するのでしょうか?
a.length-1+1、つまり9でしょうか

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

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

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

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

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

guest

回答2

0

ベストアンサー

まずはMath.floorMath.random()が何なのか
調べてから質問をお願いします。

この2つが理解できれば
6行目のi+1は何を意味するのかがわかります。

投稿2019/08/12 11:26

yasutomi

総合スコア2939

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

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

GoodDay

2019/08/12 11:39

Math.floor()は小数点以下を切り捨て, Msth.random()は0以上1未満つまり、0~0.999...の整数または小数の値を返す rは0以上9未満の整数を意味していると思います。 間違えないでしょうか
yasutomi

2019/08/12 11:43

Msth.random()ではなく Math.random()なのでそこだけ間違いです。 その2つがググって調べただけでなく ちゃんと使いこなせるのであれば 6行目のi+1は何を意味するのかがわかるはずです。
GoodDay

2019/08/12 12:11

iの値が8,7,6,5,4,3,2,1のとき 4行目からのfor文内の処理がされるので、 6行目のi+1は9,8,7,6,5,4,3,2のどれかである。これで正しいでしょうか。これだけご教授いただけたら幸いです。
yasutomi

2019/08/12 12:16

それが正しいかどうかはconsole.logで調べればわかります。
yasutomi

2019/08/12 12:37

alert()を使用すると確認しづらいので console.logを使用したほうが良いです。 Codepenでも左下のConsoleで確認可能です。
GoodDay

2019/08/12 12:52

初めて知りました。 細かい点までご教授ありがとうございますー
guest

0

var a = [1,2,3,4,5,6,7,8,9]; for(i = a.length -1; i>0; i--) { console.log(i); }


8
7
6
5
4
3
2
1
を表示します。

for文におけるiは各ループにおける別の値を示します。

for文をご理解されていないのではないでしょうか?
次の通りfor文を図で解説します。
増減するiに対してi>0の間、for文本体を実行するということです。
for文はJavaScript以外の言語でも共通です。

for文の説明

投稿2019/08/12 12:02

querykuma

総合スコア777

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

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

GoodDay

2019/08/12 12:17

ありがとうございます。一度よく考えてyasutomiさんにも言ったのですが、 iの値が8,7,6,5,4,3,2,1のとき 4行目からのfor文内の処理がされるので、 6行目のi+1は9,8,7,6,5,4,3,2とこのような順にループされる。この概念で間違いないでしょうか。
querykuma

2019/08/12 12:23

はい、そのとおりです。
GoodDay

2019/08/12 12:34

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問