๊ธฐ๋ณธ ์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์ถ”์ฒœ ๊ฒŒ์‹œ๋ฌผ

[Go] ๊ณ ๋ฃจํ‹ด

๋Ÿฐํƒ€์ž„(Runtime) visual code์—์„œ ๋ธŒ๋ผ์šฐ์ € ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค: Alt+B Go runtime์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘, ๋™์‹œ์„ฑ์„ ํฌํ•จํ•˜์—ฌ Go ํ”„๋กœ๊ทธ๋ฆผ์˜ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” Go runtime์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์•„ํ‚คํ…์ดˆ, ํŠน์„ฑ๊ณผ ์žฅ์ ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. Go Runtime Architecture Go runtime์€ ๋ชจ๋“ˆ์‹์ด๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋™์ž‘์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ธต์  ์•„ํ‚คํ…์ณ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์€ ์Šค์ผ€์ค„๋Ÿฌ(schedualer), ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ(garbage collector), ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž(memory alllocator) ๋ฐ ์Šคํƒ๊ด€๋ฆฌ(stack management)๋ฅผ ํฌํ•จํ•œ ์–ด๋ ค ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Schedualer Go ๋Ÿฐํƒ€์ž„์˜ ํ•ต์‹ฌ์€ ๊ณ ๋ฃจํ‹ด์˜ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๊ณ ๋ฃจํ‹ด์€ ํšจ์œจ์ ์ธ ๋™์‹œ์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ€๋ฒผ์šด ์Šค๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ์— ๊ณ ๋ฃจํ‹ด์„ ๋ถ„์‚ฐํ•˜๊ณ , ์Šค๋ ˆ๋“œ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , I/O ์ž‘์—…์„ ์กฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. thread(์Šค๋ ˆ๋“œ): ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„๋กœ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ ๋‹จ์œ„๋ฅผ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋ฃจํ‹ด(goroutine): Go ์–ธ์–ด๋กœ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ™œ๋™์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋ฃจํ‹ด์„ ๋งŒ๋“œ๋Š” ๋น„์šฉ์„ ์Šค๋ ˆ๋“œ์— ๋น„ํ•ด ๋งค์šฐ ์ ๊ธฐ ๋–„๋ฌธ์— ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์ ์–ด๋„ ํ•˜๋‚˜์˜ main() ํ•จ์ˆ˜๋ผ๋Š” ๊ณ ๋ฃจํ‹ด์„ ํฌํ•จํ•˜๊ณ  ๊ณ ๋ฃจํ‹ด์€ ํ•ญ์ƒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์ธํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ๊ณ ๋ฃจํ‹ด์€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ณ ๋ฃจํ‹ด๋ณด๋‹ค main์ด ๋จผ์ € ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Go ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋งค์šฐ ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ๋งŽ์€ ์ˆ˜์˜ ๋™์‹œ ๊ณ ๋ฃจํ‹ด์„ ์†์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ๊ฐ„์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ๊ฒฝํ•ฉ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ์ž‘์—… ํ›”์น˜๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค...

[Go] Pointer

Pointer

Go์—๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ๋Š” ๊ฐ’์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ํƒ€์ž…๋‹™๋‹ˆ๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var ๋ณ€์ˆ˜๋ช… *ํƒ€์ž…
var p *int

์ด๋ ‡๊ฒŒ ์„ ์–ธํ•œ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์€ &์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import "fmt"

func main() {
	a := 1
	var p *int
	p = &a
	*p = 20
	fmt.Println("p๋Š” pointer ์ฆ‰ ๋ณ€์ˆ˜ a์˜ ์ฃผ์†Œ๋ฅผ ๋ณด๊ด€: ", p)
	fmt.Println("*p๋Š” ์ •์ˆ˜ 20์„ ๋ณด๊ด€: ", *p)
}
p๋Š” pointer ์ฆ‰ ๋ณ€์ˆ˜ a์˜ ์ฃผ์†Œ๋ฅผ ๋ณด๊ด€:  0xc0000a2040
*p๋Š” ์ •์ˆ˜ 20์„ ๋ณด๊ด€:  20

์œ„ ์ฝ”๋“œ์—์„œ p๋Š” pointer์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ &a์˜ ๊ฒฐ๊ณผ์ธ a์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— *p๋Š” pointer๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ๊ฐ’์„ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ด ๋ด…๋‹ˆ๋‹ค.

func main() {
	a := 1
	var p *int
	p = &a
	*p = &a
	fmt.Println("p๋Š” pointer ์ฆ‰ ๋ณ€์ˆ˜ a์˜ ์ฃผ์†Œ๋ฅผ ๋ณด๊ด€: ", p)
	fmt.Println("*p๋Š” ์ •์ˆ˜ 20์„ ๋ณด๊ด€: ", *p)
}
# command-line-arguments
go_project\const.go:9:7: cannot use &a (value of type *int) as int value in assignment

์ฆ‰, *p๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ฃผ์†Œ๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

package main

import "fmt"

func main() {
	var a int = 10
	var p *int
	fmt.Println(a)//a๊ฐ’ ์ถœ๋ ฅ

	p = &a
	fmt.Printf("%v\n", &a) //%v ์ธ์Šคํ„ด์Šค ์ถœ๋ ฅ, a์˜ ์ฃผ์†Œ
	fmt.Printf("%v\n", p)//a์˜ ์ฃผ์†Œ

	*p = 20
	fmt.Println(a) //a์˜ ๊ฐ’
	fmt.Println(*p)//a์˜ ๊ฐ’์ด *p์— ์ €์žฅ
}
10
0xc00000a0e8
0xc00000a0e8
20
20

์ธ์Šคํ„ด์Šค(instance): ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ๋ฐ์ดํ„ฐ์˜ ์‹ค์ฒด

nil: ํฌ์ธํ„ฐ์˜ ๊ธฐ๋ณธ๊ฐ’

๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ ํƒ€์ž…์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์—ญ์‹œ ๊ฐ™์€ ๋ฐฉ์‹์ด๋ฉฐ ๊ทธ ๊ธฐ๋ณธ๊ฐ’์€ nil ์ž…๋‹ˆ๋‹ค.

import "fmt"

func main() {
	var p *int

	fmt.Println(p)
}
<nil>

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

[python]KeyWord

keywords Characters or strings already used to define basic commands in programming languages such as python are called reserved words. This reserved word cannot be used when defining objects such as variables, functions, and classes when coding by the user. python has 33 reserved words, and it distinguishes between lowercase and uppercase letters in Engolsh. All other keywords are lowercase except True, False, None, etc. a and, as, assert, async, await b break c class, continue d def, del e eolf, else, except f False, finally, for, from g global i in, if, import, is l lambda n nonlocal, None, not o or r raise, return p pass ...

[Go] ๊ณ ๋ฃจํ‹ด

๋Ÿฐํƒ€์ž„(Runtime) visual code์—์„œ ๋ธŒ๋ผ์šฐ์ € ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค: Alt+B Go runtime์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘, ๋™์‹œ์„ฑ์„ ํฌํ•จํ•˜์—ฌ Go ํ”„๋กœ๊ทธ๋ฆผ์˜ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” Go runtime์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์•„ํ‚คํ…์ดˆ, ํŠน์„ฑ๊ณผ ์žฅ์ ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. Go Runtime Architecture Go runtime์€ ๋ชจ๋“ˆ์‹์ด๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋™์ž‘์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ธต์  ์•„ํ‚คํ…์ณ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์€ ์Šค์ผ€์ค„๋Ÿฌ(schedualer), ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ(garbage collector), ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž(memory alllocator) ๋ฐ ์Šคํƒ๊ด€๋ฆฌ(stack management)๋ฅผ ํฌํ•จํ•œ ์–ด๋ ค ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Schedualer Go ๋Ÿฐํƒ€์ž„์˜ ํ•ต์‹ฌ์€ ๊ณ ๋ฃจํ‹ด์˜ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๊ณ ๋ฃจํ‹ด์€ ํšจ์œจ์ ์ธ ๋™์‹œ์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ€๋ฒผ์šด ์Šค๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ์— ๊ณ ๋ฃจํ‹ด์„ ๋ถ„์‚ฐํ•˜๊ณ , ์Šค๋ ˆ๋“œ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , I/O ์ž‘์—…์„ ์กฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. thread(์Šค๋ ˆ๋“œ): ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„๋กœ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ ๋‹จ์œ„๋ฅผ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋ฃจํ‹ด(goroutine): Go ์–ธ์–ด๋กœ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ™œ๋™์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋ฃจํ‹ด์„ ๋งŒ๋“œ๋Š” ๋น„์šฉ์„ ์Šค๋ ˆ๋“œ์— ๋น„ํ•ด ๋งค์šฐ ์ ๊ธฐ ๋–„๋ฌธ์— ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์ ์–ด๋„ ํ•˜๋‚˜์˜ main() ํ•จ์ˆ˜๋ผ๋Š” ๊ณ ๋ฃจํ‹ด์„ ํฌํ•จํ•˜๊ณ  ๊ณ ๋ฃจํ‹ด์€ ํ•ญ์ƒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์ธํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ๊ณ ๋ฃจํ‹ด์€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ณ ๋ฃจํ‹ด๋ณด๋‹ค main์ด ๋จผ์ € ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Go ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋งค์šฐ ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ๋งŽ์€ ์ˆ˜์˜ ๋™์‹œ ๊ณ ๋ฃจํ‹ด์„ ์†์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ๊ฐ„์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ๊ฒฝํ•ฉ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ์ž‘์—… ํ›”์น˜๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค...

๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”์ • ๋„๊ตฌ: PDF, CDF ๋ฐ ๋ถ„์œ„์ˆ˜ ํ•จ์ˆ˜

๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”์ • ๋„๊ตฌ: PDF, CDF ๋ฐ ๋ถ„์œ„์ˆ˜ ํ•จ์ˆ˜ ํ™•๋ฅ  ๋ฐ€๋„ ํ•จ์ˆ˜(PDF)์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ , ๊ฐ’ ๋ฒ”์œ„์˜ ํ™•๋ฅ ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ˆ„์  ๋ถ„ํฌ ํ•จ์ˆ˜(CDF)๋ฅผ ์†Œ๊ฐœํ•˜๊ณ , ํ™•๋ฅ  ๋ถ„ํฌ๋ฅผ ๋™์ผํ•œ ํ™•๋ฅ ๋กœ ๋‚˜๋ˆ„๋Š” ๋ถ„์œ„์ˆ˜๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฑ๋ถ„์œ„์ˆ˜๋Š” 100๋ถ„์œ„์ˆ˜์ด๋ฉฐ, ์ด๋Š” ํ™•๋ฅ  ๋ถ„ํฌ๋ฅผ 100๊ฐœ์˜ ๋™์ผํ•œ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ ๊ฐ€์ž… ๋ชฉ๋ก์— ๋Œ€ํ•œ ์ „ํ™˜์œจ ์ถ”์ • ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๊ณ  ๋ธ”๋กœ๊ทธ ๋ฐฉ๋ฌธ์ž๊ฐ€ ์ด๋ฉ”์ผ ๋ชฉ๋ก์— ๊ฐ€์ž…ํ•  ํ™•๋ฅ ์„ ์•Œ๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งˆ์ผ€ํŒ… ์šฉ์–ด๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์ „ํ™˜ ์ด๋ฒคํŠธ ๋˜๋Š” ๊ฐ„๋‹จํžˆ ์ „ํ™˜์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ž…ํ•  ํ™•๋ฅ ์„ ์ „ํ™˜์œจ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋…์ž ์ˆ˜ k์™€ ๋ฐฉ๋ฌธ์ž ์ด ์ˆ˜ n์„ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ๊ตฌ๋… ํ™•๋ฅ  p๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ ํƒ€ ๋ถ„ํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ ํƒ€ ๋ถ„ํฌ์— ํ•„์š”ํ•œ ๋‘ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ฮฑ๋กœ, ์ด ๊ฒฝ์šฐ ๊ตฌ๋…์ž ์ด ์ˆ˜(k)๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ฮฒ๋Š” ๊ตฌ๋…ํ•˜์ง€ ์•Š์€ ์ด ์ˆ˜(n – k)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ™•๋ฅ  ๋ฐ€๋„ ํ•จ์ˆ˜ ์ฒซ 40,000๋ช…์˜ ๋ฐฉ๋ฌธ์ž์— ๋Œ€ํ•ด 300๋ช…์˜ ๊ตฌ๋…์ž๋ฅผ ์–ป๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ PDF๋Š” ฮฑ = 300์ด๊ณ  ฮฒ = 39,700์ธ ๋ฒ ํƒ€ ๋ถ„ํฌ์ž…๋‹ˆ๋‹ค. ๋ฒ ํƒ€ ๋ถ„ํฌ์˜ ํ‰๊ท  ๊ณ„์‚ฐ $$\tag{1}\mu_{\text{beta}}=\frac{\alpha}{\alpha + \beta}$$ ์‹ 1์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉ๋ฌธ์ž ์ค‘์˜ ๊ตฌ๋…์ž์— ๋Œ€ํ•œ ํ‰๊ท ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. import numpy as np import pandas as pd from scipy import stats, special import itertools from sympy import * import matplotlib.pyplot as plt import seaborn as sns sns.set_style("darkgrid") def decorate_plot(xlab, ylab, title=None, size=(4,3)): plt.figu...