*Luaで良く作る関数 ~math編~ [#ke1f7d22]

-[[math.round>#math_round]]
-[[math.type>#math_type]]
-[[行列やベクトル>#math_matrix]]
-[[複素数>#math_complex]]

&aname(math_round);
**math.round [#zf0d6a34]
#sh(lua){{
-- 四捨五入。実数numを、小数idp桁で丸める。
function math.round(num, idp)
    if idp and idp>0 then
        local mult = 10^idp
        return math.floor(num * mult + 0.5) / mult
    end
    return math.floor(num + 0.5)
end
}}

&aname(math_type);
**math.type [#u90e429f]
#sh(lua){{
-- 対象が整数なら"integer"、実数なら"float"、数値でないならnilが返ってくる。
-- Lua5.3に同じ関数が存在する。
math.type = math.type or function(num)
    if type(num) == "number" then
        if num%1 == 0 then
            return "integer"
        else
            return "float"
        end
    end
    return nil
end
}}

&aname(math_hex);
**math.hex [#h773c971]
#sh(lua){{
-- 対象の引数の整数を16進の文字列に変換します。
function math.hex(num)
    return string.format("%x", num)
end
}}

**行列やベクトル [#eb114eb7]
&aname(math_matrix);
- [[davidm/lua-matrix>https://github.com/davidm/lua-matrix/tree/master/lua]]
#ref(http://lua.tips/download/func/math/matrix.lua)

**複素数 [#mff0282b]
&aname(math_complex);
- [[davidm/lua-matrix>https://github.com/davidm/lua-matrix/tree/master/lua]]
#ref(http://lua.tips/download/func/math/complex.lua)

**数学ライブラリで、ここだけは抑えておくべきもの [#gd0130ba]
-数値の最大値を表す変数huge
>~
実装によるので一度出力してみて内容を確認すべき。~
hugeの値が特殊なinf[無限]になることもある。~
''lua 5.3からはmath.maxinteger''などの方が使い道がある

-math.random(m, n)
>~
m, n … 数値型(1~4294967295) 
m以上、n以下の範囲の擬似乱数を返します。擬似乱数の種はmath.randomseed関数で指定します。 
>>
引数が1つだけの場合は、1以上、第1引数以下の整数 
引数が1つも無い場合は、0以上、1以下の浮動少数

>~
#sh(lua){{
math.randomseed(os.time())
r = math.random(100)        -- r = 1~100
r = math.random(1000, 2000) -- r = 1000~2000
r = math.random()   -- r = 0.33323454
}}
''randomseedは種の設定。''~
''時間が変化することが期待できる場合は、os.time()を、1フレーム内で何度も処理する。''~
''時間の変化が期待できない場合は、なんらかの内部的カウンタなどを種とする。''~
この当たりは、他の言語と同じ。~


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS