[GO] #3-7. 패키지 탐방 (math, math/[rand | cmplx])

Study·2021년 5월 29일
1

고랭

목록 보기
14/18
post-thumbnail

math

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 을 반환한다.

x0 에 가까울 때 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]bitsf 의 부호 비트와 동일한 비트 위치의 결과를 사용하여 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

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

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 은 요소를 인덱스 ij 로 교체한다.

func Unit32() unit32
func Unit64() unit64

기본 소스에서 난수 [unit32 | unit64] 를 반환한다.

타입

Rand

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] 를 반환한다.

Source64

0, 1 << 64 범위에서 균일하게 분산된 난수 unit64 값을 직접 생성할 수도 있는 Source 이다.

Rand r 의 기본 SourceSource64 를 구현하면 r.Unit64s.Int63 을 두번 호출하는 대신 s.Unit64 를 한번 호출한 결과를 반환한다.

type Source64 interface {
	Source
    Unit64() unit64
}

Zipf

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 분포에서 가져온 값을 반환한다.

profile
Study

0개의 댓글