1. 程式人生 > >Lua_第17 章 數學庫

Lua_第17 章 數學庫

下使用 asi 變量 ng- log 組成 執行 功能 col

第17 章 數學庫

在這一章中(以下關於標準庫的幾章中相同)我的主要目的不是對每個函數給出完整地說明,而是告訴你標準庫可以提供什麽功能。為了可以清楚地說明問題,我可能 會忽略一些小的選項或者行為。基本的思想是激發你的好奇心,這些好奇之處可能在參考於冊中找到答案。

數學庫由算術函數的標準集合組成。比方三角函數庫(sin, cos, tan, asin, acos, etc.), 冪指函數(exp, log, log10),舍入函數(floor, ceil)、max、min。加上一個變量 pi。

數學庫也定義了一個操作符(^)。

全部的三角函數都在弧度單位下工作。

(Lua4.0 曾經在度數下工作。

)你能夠使用 deg 和 rad 函數在度和弧度之間轉換。

假設你想在 degree 情況下使用三角函數,你能夠重定 義三角函數:

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 用來產生偽隨機數,有三種調用方式:

第一:不帶參數,將產生 [0,1)範圍內的隨機數.

第二:帶一個參數 n,將產生 1 <= x <= n 範圍內的隨機數 x.

第三:帶兩個參數 a 和 b,將產生 a <= x <= b 範圍內的隨機數 x.

你能夠使用 randomseed 設置隨機數發生器的種子,僅僅能接受一個數字參數。通常在 程序開始時,使用國定的種子初始化隨機數發生器,意味著每次執行程序,將產生同樣 的隨機數序列。

為了調試方便。這非常有優點。可是在遊戲中就意味著每次執行都擁有同樣的關卡。解決問題的一個通常的技巧是使用當前系統時間作為種子:

math.randomseed(os.time())

(os.time 函數返回一個表示當前系統時間的數字,一般是自新紀元以來的一個整 數。)

Lua_第17 章 數學庫