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

関連記事

【javascript/jQuery】JSON形式のデータの表示確認をする

PHPであれば「var_dump」や「print_r」などでJSON形式のデータの中身が思い通りの者

記事を読む

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

幅固定サイトでのスマホ回転時Webサイトの横幅を合わせる方法のメモ。 下記2点の設定が必要です。

記事を読む

【jQuery UI】タブの初期状態を選択するとエラーがでて失敗する

jQuery UIでタブをプログラム側から選択させるには以下のようなコードを書けばいい…といったこと

記事を読む

【javascript】正規表現文字置換簡易ツール

jQueryで作成した正規表現による文字抽出用スクリプトです。 (使い方) 「正規表

記事を読む

【javascript】正規表現文字抽出簡易ツール

jQueryで作成した正規表現による文字抽出用スクリプトです。 (使い方) 「正規表

記事を読む

【javascript】RGB⇔カラーコード変換ライブラリ

RGBをカラーコードに変換、または、カラーコードをRGBに変換したい場合が出てきたのでどういうも

記事を読む

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

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

記事を読む

【ImgToAA】画像をAA化するツール

指定の画像を読み込ませてAA化するツールです。サンプルはこちら。 (使い方) 画像ファイ

記事を読む

javascriptでチェックボックスを一括で変更する方法

チェックボックスのチェックに一つ一つチェックを入れていくのは非常に手間がかかるのでjavascrip

記事を読む

tableデータから棒グラフを描画できるjQueryプラグインTableBarChartを使ってみる

グラフを作成することについて 既存のtableデータから簡単に棒グラフの作成できるTableBar

記事を読む

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

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

【Laravel5】既存のDBからデータを取得して表示する

はじめに 今まで作ったWebサイトをLaravel5で見れるようにし

【C++/OpenCV】cv::Matの画像にインパルスノイズを付加する

OpenCVで画像にノイズを付け足したいと思って調べたところ、Pyth

Intel Corei7-7700TでHTC Viveの動作確認

はじめに HTC ViveというVRヘッドセットで遊んでみたのでその

【Python】フォルダ内のカッコ付き数字ファイルを一括でリネームするスクリプト

はじめに タイトルどおりなのですが、指定フォルダ内のファイルのファイ

OpenCV3.1のTracking APIでトラッキングを試す

はじめに 先日OpenCV3.1をopencv_contrib付きで

パソコンを複数台使う際便利なツール

はじめに 先日、機械学習用にGPUを積んだBTOパソコンを購入しまし

→もっと見る

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