줄리아에서 랜덤 추출하는 방법
설명1
줄리아에서 무작위 추출을 하는 함수는 다음과 같다.
rand([rng=default_rng()], [S], [dims...])
rng
는 Random Number Generator의 약자로, 난수 추출 알고리즘을 지정한다. 무슨 말인지 모르겠으면 건드리지 않아도 된다.
S
는 (아마도) Set의 약자로 무작위 추출을 할 집합을 명시하는 변수이다. S
의 변수로 입력가능한 것으로는 다음의 것들이 있다.
- 인덱스가 있는 객체
AbstractDict
혹은AbstractSet
- 문자열
- 타입 (정수, 소수만 가능하다. 유리수, 무리수는 불가능.)
추출 집합을 타입으로 지정하였을 경우, 정수형이라면 typemin(S):type(S)
의 범위에서 추출한다 (BigInt
는 지원하지 않는다).
julia> typemin(Int16), typemax(Int16)
(-32768, 32767)
julia> typemin(Int32), typemax(Int32)
(-2147483648, 2147483647)
julia> typemin(Int64), typemax(Int64)
(-9223372036854775808, 9223372036854775807)
소수라면 $[0, 1)$ 범위에서 추출한다.
julia> rand(Float64)
0.4949745522302659
julia> rand(ComplexF64)
0.8560168003603014 + 0.16478582700545064im
[dims...]
는 추출할 배열의 차원을 나타낸다. rand(S, m, n)
이라면 집합 S의 원소에서 (중복을 포함하여) $m \times n$개를 뽑아 $m \times n$ 모양의 배열을 반환한다. 차원을 입력하지 않으면 실수가 반환된다. 실수와 1차원 벡터가 명백히 구분되니 주의하자. 또한 $2\times 3$ 배열을 얻고 싶어 차원을 (2,3)
과 같이 튜플로 입력하면 S
의 변수로 받아들이므로 전혀 다른 결과가 나오니 주의하자.
julia> rand(Float64) # 실수 추출
0.42226201756172266
julia> rand(Float64, 1) # 성분이 실수인 1x1 배열로 추출
1-element Vector{Float64}:
0.7361136057571305
julia> rand(2,3) # 성분이 실수인 2x3 배열로 추출
2×3 Matrix{Float64}:
0.648742 0.364548 0.0550352
0.0350098 0.56055 0.83297
julia> rand((2,3)) # 2와 3중에서 추출
3
더 심화적인 내용은 다음을 참고하자.
코드
인덱스가 있는 객체
julia> rand((2,5))
5
julia> rand(2:5)
3
julia> rand([2,3,4,5])
4
julia> rand(["x", "y", 4])
"x"
딕셔너리
추출집합을 딕셔너리로 설정하면 키-값 페어Pair 그 자체가 추출된다.
julia> d = Dict(2=>4, 3=>5, 4=>"6")
Dict{Int64, Any} with 3 entries:
4 => "6"
2 => 4
3 => 5
julia> rand(d)
4 => "6"
julia> rand(d)
2 => 4
문자열
추출집합을 문자열로 두면 문자열 내의 문자 중 임의의 것을 추출한다.
julia> str = "freshrimpsushi"
"freshrimpsushi"
julia> rand(str)
'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
julia> rand(str)
'h': ASCII/Unicode U+0068 (category Ll: Letter, lowercase)
타입
julia> rand(Int32, 3)
3-element Vector{Int32}:
1552806175
-384901411
-1580189675
julia> rand(UInt32, 3)
3-element Vector{UInt32}:
0xd2f44f99
0x166a8b9e
0x92fe22dc
julia> rand(Float32, 3)
3-element Vector{Float32}:
0.59852564
0.6247238
0.23303497
julia> rand(ComplexF32, 3)
3-element Vector{ComplexF32}:
0.10872495f0 + 0.6622572f0im
0.6408408f0 + 0.46815878f0im
0.7766515f0 + 0.73314756f0im
환경
- OS: Windows11
- Version: Julia 1.9.0