この最初のバージョンは Lua 5.0 用に書かれました。後のバージョンでも依然として大部分が関連していますが、いくつかの違いがあります。
4 番目のバージョンは Lua 5.3 を対象としており、Amazon やその他の書店で入手できます。
書籍を購入することで、Lua プロジェクトをサポートすることもできます。


18 – 数学ライブラリ

この章(および他の章の標準ライブラリ)での私の目的は、各関数の完全な仕様を提供することではなく、ライブラリが提供できる機能の種類を示すことです。解説を明確にするために、細かいオプションや振る舞いを省略することがあります。主な目的は、参照マニュアルで十分に満足できるような、あなたの好奇心を刺激することです。

math ライブラリは、三角関数(sincostanasinacos など)、指数と対数(exploglog10)、丸め関数(floorceil)、maxmin、さらに変数 pi などの標準的な数学関数のセットを構成します。数学ライブラリは演算子「^」も定義し、指数演算子として動作します。

三角関数はすべてラジアンで動作します。(Lua 4.0 までは度数で動作していました)degrad 関数を使用して度数とラジアンを変換できます。度数で動作する場合は、三角関数を次のように再定義できます。

    local sin, asin, ... = math.sin, math.asin, ...
    local deg, rad = math.deg, math.rad
    math.sin = function (x) return sin(rad(x)) end
    math.asin = function (x) return deg(asin(x)) end
    ...

math.random 関数は疑似乱数を生成します。3 つの方法で呼び出すことができます。引数なしで呼び出すと、範囲 [0, 1) に一様分布する疑似乱数が戻ります。1 つの引数整数 n を指定して呼び出すと、1 <= x <= n となる疑似乱数整数 x が戻ります。たとえば、random(6) を使用してサイコロの結果をシミュレートできます。最後に、2 つの整数引数 l と u を指定して random を呼び出すと、l <= x <= u となる疑似乱数整数 x が取得できます。

randomseed 関数を使用して疑似乱数ジェネレータのシードを設定できます。唯一の数値引数はシードです。通常、プログラムの開始時に、固定シードを使用してジェネレータを初期化します。つまり、プログラムを実行するたびに同じ疑似乱数のシーケンスが生成されます。デバッグでは、これは優れた特性です。しかし、ゲームでは同じシナリオが何度も発生することになります。この問題を解決するための一般的な手法は、現在の時刻をシードとして使用することです。

    math.randomseed(os.time())
os.time 関数は、通常はいくつかのエポックからの秒数として、現在時刻を表す数値を返します。)