줄리아에서 랜덤 추출하는 방법
설명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)
소수라면 범위에서 추출한다.
julia> rand(Float64)
0.4949745522302659
julia> rand(ComplexF64)
0.8560168003603014 + 0.16478582700545064im
[dims...]
는 추출할 배열의 차원을 나타낸다. rand(S, m, n)
이라면 집합 S의 원소에서 (중복을 포함하여) 개를 뽑아 모양의 배열을 반환한다. 차원을 입력하지 않으면 실수가 반환된다. 실수와 1차원 벡터가 명백히 구분되니 주의하자. 또한 배열을 얻고 싶어 차원을 (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