math.random
ランダムな数値を返す
lua
math.random ([m [, n]])
説明
ランダムな数値を返します。
- 引数なしの場合:
0
以上1
未満の疑似乱数(実数)を返します。 m
を指定した場合:1
以上m
以下の疑似乱数(整数)を返します。m
とn
を指定した場合:m
以上n
以下の疑似乱数(整数)を返します。
補足
- LuaJIT は、Tausworthe 擬似乱数生成器(PRNG)を使用して
math.random()
とmath.randomseed()
を実装しており、その周期は2^223
です。この PRNG は、プラットフォーム固有の ANSIrand()
を使用する標準の Lua 実装と比較して、非常に高品質な乱数を生成します。 - この PRNG は、すべてのプラットフォームで同じシードから同じ乱数列を生成し、シード引数のすべてのビットを使用します。
- 引数なしの
math.random()
は、各呼び出しで 52 ビットの疑似乱数ビットを生成します。結果は0.0
以上1.0
未満の範囲で均等に分布します。math.random(n [, m])
は正確にスケーリングされ、均一性を保つために適切に丸められます。 - 重要:この PRNG や、単純な
math.random()
API に基づく他の乱数生成器は、暗号用途には適していません。
サンプルコード
lua
print(math.random()) -- [0, 1] の範囲の実数
print(math.random(10)) -- 1から10の整数
print(math.random(5, 15)) -- 5から15の整数
この例では、異なる範囲の擬似乱数を生成しています。
互換性
- Lua5.1
- LuaJIT