6.7 数学関数

このライブラリは基礎的な数学関数を提供します。全ての関数と定数は math テーブルに公開されます。integer/float と印の付いた関数は整数の引数に対して整数を返し、整数以外の引数に対して浮動小数点数を返します。切り捨て関数 math.ceil, math.floor, math.modf は計算結果が整数の範囲に収まるなら整数を返し、収まらないなら浮動小数点数を返します。

math.abs (x)

interger/float

x-x の大きい方を返します。

math.acos (x)

x のアークコサインを返します。x の単位はラジアンです。

math.asin (x)

x のアークサインを返します。x の単位はラジアンです。

math.atan (y [, x])

y/x のアークタンジェントを返します。y/x の単位はラジアンです。結果がどの四分円に収まるかを判定するのに両方の引数の符号が使われます。x が 0 の場合も正しく処理されます。

x のデフォルトの値は 1 です。このため math.atan(y)y のアークタンジェントを返します。

math.ceil (x)

x 以上の最小の整数を返します。

math.cos (x)

x のコサインを返します。x の単位はラジアンです。

math.deg (x)

角度 x をラジアンから度数に変換します。

math.exp (x)

ex の値を返します (e は自然対数の底です)。

math.floor (x)

x 以下の最大の整数を返します。

math.fmod (x, y)

interger/float

xy で割った余りを返します。除算では商をゼロ方向に丸めます。

math.huge

他の全ての数値より大きい浮動小数点数 HUGE_VAL です。

math.log (x [, base])

x の与えられた底に関する対数を返します。base のデフォルトの値は e です (つまり x の自然対数が返ります)。

math.max (x, ...)

引数の中の最大値を返します。比較は Lua の < 演算子を使って行われます。

math.maxinteger

整数の最大値を表す整数です。

math.min (x, ...)

引数の中の最小値を返します。比較は Lua の < 演算子を使って行われます。

math.mininteger

整数の最小値を表す整数です。

math.modf (x)

x の整数部分と小数部分を返します。二つ目の返り値は必ず浮動小数点数です。

math.pi

円周率の値です。

math.rad (x)

角度 x を度数からラジアンに変換します。

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

引数を指定せずに呼ぶと、区間 [0, 1) の一様分布に従う疑似乱数 (浮動小数点数) を返します。二つの整数 m, n を渡して呼ぶと、区間 [m, n] の一様分布に従う疑似整数乱数が返ります。正の整数 n に対する math.random(n)math.random(1,n) と等価です。math.random(0) は全てのビットが (疑似) ランダムな整数を生成します。

この関数は xoshiro256** アルゴリズムを使って 64 ビットの疑似乱数を生成します。math.random(0) ではこの値がそのまま返り値となり、他の場合 (区間付き整数および浮動小数点数) ではこの乱数を歪まないように変形したものが返り値となります。

Lua は疑似乱数生成器を math.randomseed() に等しい処理で初期化します。そのため math.random はプログラムが実行されるたびに異なる列を生成するはずです。

math.randomseed ([x [, y]])

引数が少なくとも一つ存在すれば、パラメータ xy をつないだ 128 ビットの値をシードとして疑似乱数生成器を初期化します。同じシードは同じ数字の列を生成します。y のデフォルトの値は 0 です。

引数を与えずに呼び出すと、ランダム性を簡単に担保する形でシードが生成されます1

この関数は利用された二つのシードを返します。この返り値をもう一度使えば同じ列を得ることができます。

要求される初期値のランダム性を保証するために (あるいはプログラムのデバッグ時などでは逆に決定的な列を得るために)、math.randomseed は明示的に引数を渡して呼び出すべきです。

math.sin (x)

x のサインを返します。x の単位はラジアンです。

math.sqrt (x)

x の平方根を返します。平方根は x^0.5 という式を使っても計算できます。

math.tan (x)

x のタンジェントを返します。x の単位はラジアンです。

math.tointeger (x)

x が整数に変換可能ならその整数を返し、そうでないなら fail を返します。

math.type (x)

x が整数なら "integer" を返し、浮動小数点数なら "float" を返します。x が数値でないなら fail を返します。

math.ult (m, n)

整数 m と整数 n を符号無し整数として比較します。mn より小さいなら true を返し、そうでないなら false を返します。


  1. 訳注: ソースコードによると、Lua ステートのメモリアドレスと現在時刻がシードとして使われる。[return]