Skip to content

Math ​

数学・数値計算関連の標準定数・関数にはMath:の名前空間が付与されています。

定数 ​

型は全てnumです。

定数名説明概算値
Math:Infinity無限大なし
Math:Eネイピア数 e2.718281828459045
Math:LN22の自然対数0.6931471805599453
Math:LN1010の自然対数2.302585092994046
Math:LOG2E2を底とした e の対数1.4426950408889634
Math:LOG10E10を底とした e の対数0.4342944819032518
Math:PI円周率 π3.141592653589793
Math:SQRT1_2120.7071067811865476
Math:SQRT221.4142135623730951

基本的な関数 ​

@Math:abs(x: num): num ​

絶対値を計算します。 |x|

@Math:sign(x: num): num ​

x が正であれば1、負であれば-1、0または-0であればそのままの値を返します。
いずれでもなければNaNを返します。

@Math:round(x: num): num ​

四捨五入して、もっとも近い整数を返します。

@Math:ceil(x: num): num ​

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

@Math:floor(x: num): num ​

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

@Math:trunc(x: num): num ​

引数の小数部を切り捨て、整数部を返します。 [x]

@Math:min(a: num, b: num): num ​

小さい方の値を取得します。

@Math:max(a: num, b: num): num ​

大きい方の値を取得します。

@Math:sqrt(x: num): num ​

正の平方根を計算します。 x

@Math:cbrt(x: num): num ​

立方根を計算します。 x3

@Math:hypot(vs: arr): num ​

vs の要素をそれぞれ自乗してから合計した値の正の平方根を返します。 v12+v22+⋯+vn2

三角関数 ​

角度の単位はラジアンです。

@Math:sin(rad: num): num ​

正弦を計算します。

@Math:cos(rad: num): num ​

余弦を計算します。

@Math:tan(rad: num): num ​

正接を計算します。

@Math:asin(x: num): num ​

逆正弦を計算します。

@Math:acos(x: num): num ​

逆余弦を計算します。

@Math:atan(x: num): num ​

逆正接を計算します。

@Math:atan2(y: num, x: num): num ​

yx の正接を返しますが、 x が負値の場合は π だけずれた値を返します。

双曲線関数 ​

@Math:sinh(x: num): num ​

双曲線正弦を計算します。

@Math:cosh(x: num): num ​

双曲線余弦を計算します。

@Math:tanh(x: num): num ​

双曲線正接を計算します。

@Math:asinh(x: num): num ​

双曲線逆正弦を計算します。

@Math:acosh(x: num): num ​

双曲線逆余弦を計算します。

@Math:atanh(x: num): num ​

双曲線逆正接を計算します。

指数・対数関数 ​

@Math:pow(x: num, y: num): num ​

x の y 乗を計算します。内部的にJavascriptの**演算子ではなくMath.pow関数を用いている点を除き、ほぼCore:powと同じものです。

@Math:exp(x: num): num ​

e の x 乗を計算します。

@Math:expm1(x: num): num ​

e の x 乗から1を引いた値を計算します。

@Math:log(x: num): num ​

自然対数を計算します。常用対数にはMath:log10を使用して下さい。

@Math:log1p(x: num): num ​

x + 1の自然対数を計算します。

@Math:log10(x: num): num ​

10を底とした対数を計算します。

@Math:log2(x: num): num ​

2を底とした対数を計算します。

乱数 ​

@Math:rnd(min?: num, max?: num): num ​

乱数を生成します。
min および max を渡した場合、min <= x, x <= max の整数、
渡していない場合は 0 <= x, x < 1 の 小数が返されます。

@Math:gen_rng(seed: num | str, options?: obj): @(min?: num, max?: num) ​

シードから乱数生成器を生成します。
生成された乱数生成器は、min および max を渡した場合、min <= x, x <= max の整数、
渡していない場合は 0 <= x, x < 1 の浮動小数点数を返します。
options に渡したオブジェクトを通じて、内部の挙動を指定できます。
options.algorithmの指定による挙動の変化は下記の通りです。

options.algorithm内部の乱数生成アルゴリズム範囲指定整数生成アルゴリズム
rc4RC4Rejection Sampling
rc4_legacyRC4浮動小数点数演算による範囲制限​(0.19.0以前のアルゴリズム)
無指定 または 'chacha20'ChaCha20Rejection Sampling

なお、非セキュアコンテクストなどのcrypto.subtleが利用できないJavascript環境下ではrc4_legacyのみが利用可能となり、デフォルトもrc4_legacyに変更されます。

aiscript
let rng = Math:gen_rng('AICHAN')

// シード値を固定しているので、同じ条件下では毎回同じ生成パターンになる
<: rng(0, 10)
<: rng(0, 10)
<: rng(0, 10)

注意

rc4_legacy等、浮動小数点数演算を伴う範囲指定整数生成アルゴリズムでは、演算時の丸め誤差により、指定した max の値より大きな値が生成される可能性があります。

その他 ​

@Math:clz32(x: num): num ​

xを32ビットのバイナリで表現したときの先頭の0の個数を返します。

@Math:fround(x: num): num ​

x を32ビットの浮動小数点数に変換した時の値を返します。

@Math:imul(x: num, y: num): num ​

x と y に対しC言語風の32ビット乗算を行った結果を返します。