【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

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

関連記事

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

Twitterのオリジナルサイズの画像ファイル(.jpg-large,.jpg-orig等)を一括リネームする

Twitterの画像をオリジナルサイズで保存しようとするとjpg-la

【Unity】他のスクリプトを一括で取得して有効化・無効化を制御する

Unityを使っていて他のスクリプトを一時的に停止させたいと思ったので

テレビの録画をPCやNASで共有する

今までテレビはテレビ用のモニターで見ればいいやと思っていたのですが、さ

【DeepLearning】物体検出手法のSSD(Keras版)を試す (Ubuntu14.04)

はやりのディープラーニングの物体検出手法の一つであるSSDのサンプルを

→もっと見る

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