Skip to content

math.random

ランダムな数値を返す

lua
math.random ([m [, n]])

説明

ランダムな数値を返します。

  • 引数なしの場合0 以上 1 未満の疑似乱数(実数)を返します。
  • m を指定した場合1 以上 m 以下の疑似乱数(整数)を返します。
  • mn を指定した場合m 以上 n 以下の疑似乱数(整数)を返します。

補足

  • LuaJIT は、Tausworthe 擬似乱数生成器(PRNG)を使用して math.random()math.randomseed() を実装しており、その周期は 2^223 です。この PRNG は、プラットフォーム固有の ANSI rand() を使用する標準の 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

関連項目