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

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

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

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

Q&A

解決済

2回答

1696閲覧

JavaScriptのランダム表示 一部除外

morinokuma

総合スコア24

JavaScript

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

0グッド

0クリップ

投稿2017/09/01 04:01

ランダム表示で一部除外したいのですが分かりません。
例えば1〜50までを表示したい時は

var a = 1 + Math.floor( Math.random() * 50 );

だと思うのですが
ここで1〜50の中で指定した数(例:4、13、18、22、34、41)を除外したい場合どうすれば良いのでしょうか?
配列だと長くなってしまうので他に方法があればご教授お願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

手順としては、

  1. コードで「1~50のうち、特定の値を除いた配列」を作っておく
  2. 上で作った配列から、ランダムな番号を選んでその値を返す

という流れがいいと思います。

javascript

1var excludes = [4, 13, 18, 22, 34, 41]; 2 3var arr = []; 4for(var i = 1; i <= 50; ++i) { 5 if(excludes.indexOf(i) === -1) arr.push(i); 6} 7 8var random = arr[Math.floor( Math.random() * arr.length )]; 9

paiza.ioでの実行例

投稿2017/09/01 04:21

maisumakun

総合スコア145121

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

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

morinokuma

2017/09/01 05:18

手順が的確でこちらを参考にさせていただきます。ありがとうございました。
guest

0

関数を作ってしまうとか。

JavaScript

1var a = limit_random( [ 4, 13, 18, 22, 34, 41 ] ); 2function limit_random( arr ) { 3 while( true ) { 4 const i = 1 + Math.floor( Math.random() * 50 ); 5 if ( arr.indexOf( i ) === -1 ) { 6 return i; 7 } 8 } 9} 10console.log(limit_random( [ 4, 13, 18, 22, 34, 41 ] )); 11console.log(limit_random( [ 4, 13, 18, 22, 34, 41 ] )); 12console.log(limit_random( [ 4, 13, 18, 22, 34, 41 ] )); 13console.log(limit_random( [ 4, 13, 18, 22, 34, 41 ] )); 14console.log(limit_random( [ 4, 13, 18, 22, 34, 41 ] )); 15console.log(limit_random( [ 4, 13, 18, 22, 34, 41 ] )); 16```**動くサンプル:**[https://jsfiddle.net/xkfandda/1/](https://jsfiddle.net/xkfandda/1/)

投稿2017/09/01 04:27

編集2017/09/01 04:36
kei344

総合スコア69364

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

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

x_x

2017/09/01 04:34

0~49になってます。
kei344

2017/09/01 04:35

あ、しまった。ご指摘ありがとうございます。修正しておきます。
morinokuma

2017/09/01 05:16

上手くいきました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問