この翻訳は不完全です。英語から この記事を翻訳 してください。

Math.random()関数は、[0, 1)(0以上、1未満)の範囲で浮動小数点の擬似乱数を返します。また、範囲を指定することも可能です。実装側で乱数生成アルゴリズムの初期シードを選択し、ユーザーが初期シードを選択、またはリセットすることは出来ません。

Math.random() の提供する乱数は、暗号に使用可能な安全性を備えていません。セキュリティに関連する目的では使用しないで下さい。代わりにWeb Crypto API(より正確にはwindow.crypto.getRandomValues()メソッド)を使用して下さい。

構文

Math.random()

戻り値

0以上1未満の疑似ランダムな浮動小数点。

JavaScript における数値は、IEEE 754 浮動小数点での「JIS丸め」 (round-to-nearest-even) をするため、以下の関数の値域が ( Math.random() 自体の値域が正しくても) 厳密ではないことに注意してください。非常に大きい境界値(253 以上)のうち極めて稀な数値で、通常なら返されないはずの上限値が出力されてしまうことがあり得ます。

Getting a random number between 0 (inclusive) and 1 (exclusive)

function getRandom() {
  return Math.random();
}

Getting a random number between two values

This example returns a random number between the specified values. The returned value is no lower than (and may possibly equal) min, and is less than (and not equal) max.

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

Getting a random integer between two values

This example returns a random integer between the specified values. The value is no lower than min (or the next integer greater than min if min isn't an integer), and is less than (but not equal to) max.

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}

It might be tempting to use rounding to accomplish that, but doing so would cause your random numbers to follow a non-uniform distribution, which may not be acceptable for your needs.

Getting a random integer between two values, inclusive

While the getRandomInt() function above is inclusive at the minimum, it's exclusive at the maximum. What if you need the results to be inclusive at both the minimum and the maximum? The getRandomIntInclusive() function below accomplishes that.

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive 
}

Specifications

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) 標準 Initial definition. JavaScript 1.0 (UNIX Only) / JavaScript 1.1 (All platforms).
ECMAScript 5.1 (ECMA-262)
Math.random の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Math.random の定義
標準  
ECMAScript Latest Draft (ECMA-262)
Math.random の定義
ドラフト  

Browser compatibility

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり

 

ドキュメントのタグと貢献者

最終更新者: woodmix,