math
는 기본 상수와 수학 함수들을 제공한다.
const (
// 수학 상수
E
PI
Phi // 복소수 인자
Sqrt2 // 제곱근
SqrtE
SqrtPi
SqrtPhi
Ln2
Log2E
Ln10
Log10E
// Max 값
MaxFloat32
SmallestNonzeroFloat32
MaxFloat64
SmallestNonzeroFloat64
// 정수 한계 값
MaxInt8 = 1<<7 - 1
MinInt8 = -1 << 7
MaxInt16 = 1<<15 - 1
MinInt16 = -1 << 15
MaxInt32 = 1<<31 - 1
MinInt32 = -1 << 31
MaxInt64 = 1<<63 - 1
MinInt64 = -1 << 63
MaxUint8 = 1<<8 - 1
MaxUint16 = 1<<16 - 1
MaxUint32 = 1<<32 - 1
MaxUint64 = 1<<64 - 1
)
func Abs(x float64) float64
x
의 절대값을 반환
func Acos(x float64) float64
x
의 아크 코사인을 라디안으로 반환
func Acosh(x float64) float64
x
의 역 쌍곡 코사인을 반환
func Asin(x float64) float64
x
의 아크 사인을 라디안으로 반환
func Asinh(x float64) float64
x
의 역 쌍곡 사인을 반환
func Atan(x float64) float64
x
의 아크 탄젠트를 반환
func Atan2(y, x float64) float64
반환 값의 사분면을 결정하기 위해 두 기호를 사용하여 y / x
의 아크 텐젠트를 반환한다.
func Atanh(x float64) float64
x
의 역 쌍곡 탄젠트를 반환한다.
func Ceil(x float64) float64
x
보다 크거나 같은 최소 정수 값을 반환한다.
func Copysign(y, x float64) float64
크기가 x
이고 부호가 y
인 값을 반환한다.
func Cos(x float64) float64
라디안 인수 x
의 코사인을 반환한다.
func Cosh(x float64) float64
x
의 쌍곡 코사인을 반환한다.
func Dim(x, y float64) float64
최대 xy
또는 0
을 반환한다.
func Erf(x float64) float64
x
의 오류 함수를 반환한다.
func Erfc(x float64) float64
x
의 보완 오차 함수를 반환한다.
func Erfc(x float64) float64
Erfc(x)
의 역을 반환한다.
func Erfinv(x float64) float64
x
의 역 오류 함수를 반환한다.
func Exp(x float64) float64
x
의 기수인 e ** x
를 반환한다.
매우 큰 값은 0
또는 +Inf
로 오버플로된다.
매우 작은 값은 1
로 언더 플로된다.
func Exp2(x float64) float64
x
의 밑이 2
인 지수인 2 ** x
를 반환한다.
func Expm1(x float64) float64
x - 1
의 밑이 e
지수인 e ** x-1
을 반환한다.
x
가 0
에 가까울 때 Exp(x) - 1
보다 정확하다.
매우 큰 값은 -1
또는 +Inf
로 오버플로 된다.
func FMA(x, y, z float64) float64
하나의 반올림으로 계산된 x * y + z
를 반환한다.
func Float32bits(x float) unit64 func Float32frombits(b unit32) float32 func Float64bits(f float64) unit64 func Float64frombots(b unit64) float64
Float[32|64]bits
는 f
의 부호 비트와 동일한 비트 위치의 결과를 사용하여 f
의 이진 표현을 반환한다.
Float[32|64]frombits
는 이진 표현 b
에 해당하는 부동 소수점 숫자를 반환한다.
func Floor(x float64) float64
x
보다 작거나 같은 가장 큰 정수 값을 반환한다.
func Frexp(x float64) float64
f
를 정규화된 분수와 2의 적분 제곱으로 나눈다.
func Gamma(x float64) float64
x
의 감마를 리턴한다.
func Hypot(p, q float64) float64
Sqrt(p * p + q *q)
를 반환하여 불필요한 오버 및 언더 플로를 방지한다.
func Ilogb(x float64) float64
x
의 이진 지수를 정수로 반환한다.
func Inf(sign int) float64
부호가 >= 0
이면 양의 무한대를, 부호가 0
보다 작으면 음의 무한대를 반환한다.
func IsInf(f float64, sign int) bool
부호에 따라 f
가 무한대인지 여부를 반환한다.
func IsNaN(x float64) (is bool)
숫자값이 아닌지 여부를 반환한다.
func J0(x float64) float64 func J1(x float) float64 func Jn(x float64) float64
제 1 종의 [0, 1, n] 차 베셀 함수를 반환한다.
베셀 함수 알아보기
func Ldexp(frac float64, exp int) float64
Frexp
의 역이다. frac x 2 ** exp
를 반환한다.
func Lgamma(x float64) float64
Gamma(x)
의 자연 로그와 부호(-1 또는 +1) 를 반환한다.
func Log(x float64) float64
x
의 자연 로그를 반환한다.
func Log10(x float64) float64
x
의 10 진수 로그를 반환한다.
func Log1p(x float64) float64
1 자연 로그와 인수 x
를 반환한다.
x
가 0 에 가까울 때 Log(1 + x)
보다 더 정확하다.
func Log2(x float64) float64
x
의 이진 로그를 반환한다.
func Logb(x float64) float64
x
의 이진 지수를 반환한다.
func Max(x, y float64) float64
x
또는 y
중 더 큰 값을 반환한다.
func Min(x, y float64) float64
더 작은 값을 반환한다.
func Mod(x, y float64) float64
x / y
의 부동 소수점 나머지를 반환한다.
결과의 크기는 y
보다 작고 부호는 x
의 부호와 일치한다.
func Modf(x float64) float64
합이 f
인 정수 및 소수 부동 소수점 숫자를 반환한다.
두 값 모두 f
와 같은 부호를 갖는다.
func NaN(x float) float64
숫자가 아닌 값을 반환한다.
func Nextafter(x float64) float64 func Nextafter32(x float32) float32
y
를 향한 x
뒤의 다음 표현 가능한 float64, float32 값을 반환한다.
func Pow(x float64) float64
y
의 기본 x
지수 인 x ** y
를 반환한다.
func Pow10(x float64) float64
n
의 밑이 10
인 지수인 10 ** n
을 반환한다.
func Remainder(x float64) float64
x / y
의 부동 소수점 나머지를 반환한다.
func Round(x float64) float64 func RoundToEven(x float64) float64
0
에서 반올림하여 가장 가까운 정수를 반환한다.
RoundToEven
은 가장 가까운 정수를 반환하고 짝수로 반올림한다.
func Signbit(x float64) float64
x
가 음수인지 음수 제로값인지 반환한다.
func Sin(x float64) float64
라디안 인수 x
의 사인을 반환한다.
func Sincos(x float64) (sin, cos float64)
Sin(x), Cos(x)
를 반환한다.
func Sinh(x float64) float64
x
의 쌍곡 사인을 반환한다.
func Sqrt(x float64) float64
x
의 제곱근을 반환한다.
func Tan(x float64) float64
라디안 인수 x
의 탄젠트를 반환한다.
func Tanh(x float64) float64
x
의 쌍곡 탄젠트를 반환한다.
func Trunc(x float64) float64
x
의 정수 값을 반환한다.
func Y0(x float64) float64 func Y1(x float64) float64 func Yn(x float64) float64
두 번재 종류의 [0, 1, n] 차 베셀 함수를 반환한다.
각 함수에는 특별한 경우가 존재한다.
math 패키지에서 함수별로 확인해보자.
cmplx
패키지는 복소수에 대한 기본 상수와 수학 함수를 제공한다.
func Abs(x complex128) float64 func Acos(x complex128) float64 func Acosh(x complex128) float64 func Asin(x complex128) float64 func Asinh(x complex128) float64 func Atan(x complex128) float64 func Atanh(x complex128) float64 func Conj(x complex128) float64 func Cos(x complex128) float64 func Cosh(x complex128) float64 func Cot(x complex128) float64 func Exp(x complex128) float64
Abs
는 절대 값을 반환한다.
Acos
는 역 코사인을 반환한다.
Acosh
는 역 쌍곡 코사인을 반환한다.
Asin
는 역 사인을 반환한다.
Asinh
는 역 쌍곡 사인을 반환한다.
Atan
는 역 탄젠트를 반환한다.
Atanh
는 역 쌍곡 탄젠트를 반환한다.
Conj
켤레 복소수를 반환한다.
Cos
는 역 코사인을 반환한다.
Cosh
는 역 쌍곡 코사인을 반환한다.
Cot
는 코탄젠트를 반환한다.
Exp
기수 e
지수인 e ** x
를 반환한다.
func Inf() complex128
복소수 무한대를 반환한다.
func IsInf(x complex128) bool
무한대인지 여부를 보고한다.
func IsNaN(x complex128) bool
NaN 인지 아닌지를 반환한다.
func Log(x complex128) complex128
자연 로그를 반환한다.
func Log10(x complex128) complex128
10 진수 로그를 반환한다.
func NaN() complex128
복소수의 숫자가 아닌 값을 반환한다.
func Phase(x complex128) float64
위상을 반환한다.
func Polar(x complex128) (r, θ float64)
x = r * e ** θi
가 되는 x
의 절대값과 r
의 위상 θ
을 반환한다.
func Pow(x, y complex128) complex128
y
의 기본 x
지수인 x ** y
를 반환한다.
func Rect(r, θ float64) complex128
극좌표 r, θ
와 함께 복소수 x
를 반환한다.
func Sin(x complex128) complex128 func Sinh(x complex128) complex128 func Tan(x complex128) complex128 func Tanh(x complex128) complex128
Sin
은 사인을 반환한다.
Sinh
는 쌍곡 사인을 반환한다.
Tan
은 탄젠트를 반환한다.
Tanh
는 쌍곡 탄젠트를 반환한다.
func Sqrt(x complex128) complex128
제곱근을 반환한다.
rand
패키지는 난수 생성기를 구현한다.
Float64 및 Int 와 같은 최상위 함수는 프로그램 실행 때마다 결정적인 값 시퀀스를 생성하는 기본 공유 소스를 사용한다.
각 실행에 대해 다른 동작이 필요한 경우 Seed
함수를 사용하여 기본 소스를 초기화한다.
기본 소스는 여러 고루틴에서 동시에 사용하기에 안전하지만 NewSource
에서 만든 소스는 그렇지 않다.
보안에 민감한 작업에 대한 난수는 crypto/rand 에서 확인해보자.
func ExpFloat64() float64
비율 매개 변수(람다)가 1 이고 평균이 기본 소스에서 1 / 람다
인 지수 분포를 사용하여 (0, +math.MaxFloat64) 범위의 지수 분포를 반환한다.
func Float32() float32 func Float64() float64
기본 소스에서 0.0 ~ 1.0
의 난수를 [float32|float64] 로 반환한다.
func Int() int func Int31() int32 func Int31n(n int32) int32 func Int64() int64 func Int63n(n int64) int64 func Intn(n int) int
기본 소스에서 음이 아닌 난수 [int | int32 | int64]
를 반환한다.
매배견수를 함께 주면 0 ~ n
만큼의 정수를 반환한다.
이때 n
이 음수이면 패닉이 발생한다.
func NormFloat64() float64
기본 소스에서 표준 정규 분포(평균 = 0, 편차 = 1)를 사용하여 -math.MaxFloat64, +math.MaxFloat64
범위의 정규 분포를 float64를 반환한다.
func Prem(n int) []int
기본 소스에서 정수 0 ~ n
의 난수 수열을 가진 n 개의 정수 슬라이스를 반환한다.
func Read(p []byte) (int, error)
기본 소스에서 len(p)
임의 바이트를 생성하여 p
에 쓴다.
항상 len(p) 및 nil
오류를 반환한다.
Rand.Read
메소드와 달리 Read
는 동시 사용에 안전하다.
func Seed(seed int64)
제공된 seed
값을 사용하여 결정적 상태로 초기화한다.
Seed
가 호출되지 않으면 생성기는 Seed(1)
에 의해 시드된 것처럼 작동한다.
2³¹ - 1
로 나눌 때 나머지가 동일한 시드 값은 동일한 랜덤 시퀀스를 생성한다.
Rand.Seed
방법과 달리 Seed
는 동시 사용에 안전하다.
func Shuffle(n int, swap func(i, j int))
기본 소스를 사용하여 요소의 순서를 랜덤화한다.
n
은 요소 수이다. n < 0
이면 셔플 패닉이 발생한다.
swap
은 요소를 인덱스 i
및 j
로 교체한다.
func Unit32() unit32 func Unit64() unit64
기본 소스에서 난수 [unit32 | unit64]
를 반환한다.
type Rand struct {
// 필터링되거나 내보내지지 않은 필드들 포함
}
func New(src Source) *Rand
src
의 임의 값을 사용하여 다른 임의 값을 생성하는 새 Rand
를 반환한다.
func (r *Rand) ExpFloat64() float64
속도 매개 변수(람다)가 1이고 평균이 1 / 람다
인 지수 분포로 0, + math.MaxFloat64
범위의 지수 분포 float64 를 반환한다.
func (r *Rand) Float32() float32 func (r *Rand) Float64() float64 func (r *Rand) Int() int func (r *Rand) Int31() int32 func (r *Rand) Int31n(n int) int32 func (r *Rand) Int63() int64 func (r *Rand) Int63n(n int) int64 func (r *Rand) Intn(n int) int
각각의 타입별로 난수를 반환하고 n
으로 인자를 받는 함수는 0 ~ n
의 난수를 반환한다.
받은 인자 n
이 음수이면 패닉이 발생한다.
func (r *Rand) NormFloat64() float64
표준 정규 분포(평균 = 0, 편차 = 1)를 사용하여 -math.MaxFloat64, +math.MaxFloat64 범위의 정규 분포를 float64를 반환한다.
func (r *Rand) Perm(n int) []int
정수 0 ~ n
의 난수 순열 n
개의 정수 슬라이스를 반환한다.
func (r *Rnad) read(p []byte) (int, error)
len(p)
임의의 바이트를 생성하여 p
에 쓴다.
항상 len(p) 및 nil
오류를 반환한다.
func (r *Rand) Seed (seed int64)
제공된 seed
값을 사용하여 생성기를 결정적 상태로 초기화한다.
func (r *Rand) Suffle(n int, swap func(i, j int))
요소 순서를 랜덤화한다.
n
이 음수이면 패닉이 발생한다.
func (r *Rand) Unit32() unit32 func (r *Rand) Unit64() unit64
난수 [unit32 | unit64]
를 반환한다.
0, 1 << 64
범위에서 균일하게 분산된 난수 unit64 값을 직접 생성할 수도 있는 Source 이다.
Rand r
의 기본 Source
가 Source64
를 구현하면 r.Unit64
는 s.Int63
을 두번 호출하는 대신 s.Unit64
를 한번 호출한 결과를 반환한다.
type Source64 interface {
Source
Unit64() unit64
}
Zipf
은 분산 변량을 생성한다.
type Zipf struct {
// 필터링되거나 내보내지ㅣ 않은 필드 포함
}
func NewZipf (r *Rand, s float64, v float64, imax unit64) *Zipf
Zipf
변량 생성기를 반환한다.
생성기는 P(k)
가 (v + k) ** (-s)
에 비례하도록 k ∈ [0, imax]
값을 생성한다.
func (z *Zipf) Unit64() unit64
Zipf
개체가 설명하는 Zipf
분포에서 가져온 값을 반환한다.