【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
  • このエントリーをはてなブックマークに追加

関連記事

monacaでWebサイトをアプリ化

monacaを使ってWebサイトをアプリ化するための叩き台としてのメモです。 Webサイトのア

記事を読む

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

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

記事を読む

【jQuery/javascript】はてなボタンを動的に設置する

はてなブックマークのボタンをページの読み込みが終わった後にjavascript(jQuery)で追加

記事を読む

jQueryにおけるcreateElement

jQueryでcreateElementに変わる関数は単純で、例えばvar dom = docume

記事を読む

【javascript】RSSを読み込んで表示させる【Google Feed API】

jQueryで簡単にRSSフィードを表示させる方法としてGoogleFeedAPIを利用するというの

記事を読む

【Three.js/jThree.js】カメラ内部パラメータを変更して視野などを変える

jThree.jsでカメラの内部パラメータを変更するのに手間取ったのでメモ。参考にしているjThre

記事を読む

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

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

記事を読む

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

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

記事を読む

【jQuery UI】Sliderのオプション変更やイベントを取得をする方法

jQuery UIを使ってスライダー(トラックバー)を作ります。その際に起こるイベントとしてスライダ

記事を読む

javascriptにおけるfor文の書き方

1. for文とは ある条件が正しいときに処理を繰り返すというループを記述するための文です。 似

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしP

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSを

Windows用のシンプルなストップウォッチソフト紹介

Windows(10)でも使える使いやすいKAZAMITimerという

MNISTをDIGITS 5のCPUのみで試す(GPUなし)

はじめに DIGITSを使えばGUI操作で簡単にディープラーニングが

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2

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

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

→もっと見る

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