【Javascript】1つまたは複数のランダムな値を取得する

公開日: : 最終更新日:2014/08/14 JavaScript/jQuery

スポンサーリンク

単純なランダムを取得する

javascriptでランダムな数字を得るにはMathオブジェクトのrandomメソッドを利用します。このメソッドでは0以上1未満の範囲で疑似乱数を返します。

var randomNumber = Math.random();

任意の範囲(min~max)における数値を得るには

var randomNumber = Math.random() * (max – min) + min;

のようにして取得しますがこの場合だと整数ではないので整数にしたい場合は同じくMathオブジェクトのfloorメソッドを利用します。このメソッドは引数(数値)を一つ取り、その引数の小数点以下を切り捨てて整数として返すものです。

var randomNumber = Math.floor( Math.random() * (max – min + 1) ) + min;

このようにするとminからmaxまでの整数を得ることができます。

重複しないランダムな整数を取得する

整数を重複しないように取得するには配列をシャッフルしてしまって指定の要素を取得するのが一番いいのではないかと思います。シャッフルの仕方として配列のsortメソッドを使う方法と自前で作る方法があります。

配列のsortメソッドを使う

array.sort(func);

funcの戻り値が正のときか負のときかで配列の順序の入れ替え方を決定させます。

function func(){
return Math.random()-0.5;
}
var array = [1,2,3,4,5,6,7,8,9,10];
array.sort(func);

もしくは

var array = [1,2,3,4,5,6,7,8,9,10];
array.sort(function(){
return Math.random()-0.5;
});

デモ)
Array.sortで
var array = [1,2,3,4,5,6,7,8,9,10];
をシャッフル

ソートするメソッドを自分で定義する

Fisher-Yates法という配列シャッフルアルゴリズムが有名だそうです。(参考資料より抜粋)

Array.prototype.shuffle = function() {
var i = this.length;
while (i) {
var j = Math.floor(Math.random()*i);
var t = this[--i];
this[i] = this[j];
this[j] = t;
}
}
var array = [1,2,3,4,5,6,7,8,9,10];
array.shuffle();

デモ)
Fisher-Yates法で
var array = [1,2,3,4,5,6,7,8,9,10];
をシャッフル

実践JavaScriptで配列をシャッフルする方法リファクタリング (http://la.ma.la/blog/diary_200608300350.htm)

配列をランダムに並替えるメソッドを定義する[上級テクニック](http://www.fumiononaka.com/TechNotes/Flash/FN0212002.html)

Fisher-Yates shuffle (http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle)

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

Canvasの画像をリサイズする簡単な方法【HTML5・javascript】

調べてみるとCanvasをリサイズするようなjavascriptの関数は存在しないようなので自前で作

記事を読む

【javascript/jQuery】Progressbarで処理の進捗状況を表示する

jQuery UIでProgressbarを使う 処理経過を表示する場合プログレスバーにより提示さ

記事を読む

【HTML/jQuery UI】NumericUpDownを設置する【Spinner】

HTMLタグにNumericUpDownがないか探したのですがないみたいなのでそれが使えるようなもの

記事を読む

ニコニコ動画のURLリンクから外部プレイヤーのスクリプトに正規表現で置換する

ニコニコ動画の動画のアドレスを抽出して外部プレイヤー貼りつけソースのスクリプトに変換するソースです。

記事を読む

AmazonのランキングRSSから画像リンクを作る

Amazon RSS Amazonでいい感じのRSSが無いかと探していたのですが実は本家に素晴らし

記事を読む

PHPでページリロードをしようと思ったができなかったので

header("Location: ".$_SERVER); とすればページをリロードでき

記事を読む

javascriptで画像処理をする【HTML5】

HTML5でjavascriptを使って画像処理をしてみました。このページでは手始めにグレースケール

記事を読む

チェスボード画像自動生成ツール

1マスのサイズ(ピクセル) マスの数× 左上が白 枠をつけるか 枠の色白黒

記事を読む

YoutubeのURLリンクを外部プレイヤーのものに正規表現で置換する

Youtubeのアドレスを正規表現を使って抽出して外部プレイヤーのフレームに変換・置換するスクリプト

記事を読む

【jQuery】大量の画像で重くなったページを遅延ロードで軽くする方法【Lazy Load】

画像をふんだんに使っているページでは読み込みの際に非常に時間がかかるという問題点があります。数枚なら

記事を読む

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業

【PHP】headerでContent-Typeを指定したのに効かない場合の対処法

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようと

スマホ向け幅固定サイトの回転時の幅対応方法

幅固定サイトでのスマホ回転時Webサイトの横幅を合わせる方法のメモ。

【PHP】特定のURLからそのAtomやRSSのフィードを抽出する方法

特定のURLからRSSやATOMのフィードを抽出する方法をメモ。 流

フィード抽出ツール(RSS1.0、RSS2.0、atom)

任意URL サイト名 サイトURL RSS1.0

格安プラン限定レンタルサーバー機能比較表(2016年)

はじめに  最近新しい共用サーバーをレンタルしようと思い調査およびそ

kindle unlimitedが便利だったのでお勧めの使い方など感想メモ

 kindle unlimitedというサービスが8/3からAmazo

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑