파이썬에서 enum의 원소를 random하게 가져오는 방법을 알아보겠습니다. 먼저, Enum을 상속받은 A 클래스를 보겠습니다. 이름이 A이고 값이 1인 것, 이름이 B이고 값이 3인 것, 이름이 C이고 값이 5인 것, 이름이 D이고 값이 7인 것이 있습니다. 랜덤하게 뽑을 것이므로, choice와 같은 것이 필요한 것은 자명해 보입니다. 그런데 이것은 sequence가 필요하다고 뜹니다. 시퀀스의 대표적인 것은 list이니, enum의 데이터를 list로 변환해야겠네요. rd.choice(list(A))를 해 주면, A에 있는 item 중에 랜덤하게 하나를 뽑습니다. 이게 다입니다. 실행 결과는 A.a, A.b, A.c, A.d 중에 하나가 나옵니다. 즉, list(enum_class_name)은, e..
random 검색 결과
랜덤한 문자열을 뽑고 싶습니다. 어떻게 하면 좋을까요? python에서는 random.choices와 비슷하게 뽑고 싶다는 이야기입니다. 즉, 같은 문자가 여러 번 나와도 됩니다. 이 때 쓸 수 있는 것이 /dev/random, /dev/urandom을 이용하는 방법입니다. 그러면, 이런 이상한 문자들이 끝도 없이 생성됨을 알 수 있어요. 이들을 적절히 정제한 다음에 상위 x개만 자른다면 비슷한 기능을 구현할 수 있겠네요. 여담으로, /dev/urandom의 file type을 보면 character special이라고 되어 있네요. 문자열 중에서 특정 문자만을 삭제하는 경우 tr 명령어를 잘 쓰게 되는데요. -c 옵션을 붙이면 complement를 의미합니다. 반전의 의미입니다. 예를 들어, ^%123..
안녕하세요. 이번 시간에는 postgresql에서 random 함수를 알아보겠습니다. random 함수는 꽤 간단하게 쓸 수 있습니다. 그냥 random(). 끝입니다. 결과를 보시면 0.1816107987이 나옵니다. 또 다시 호출해 보겠습니다. 이번에는 0.3785214382가 나오네요. 문서에 따르면 이 함수는 0 이상 1 미만인 실수를 돌려준다고 되어 있어요. 추가로 언급된 부분은, security한 랜덤을 원한다면 crypto를 알아보라고 되어 있어요. 그러면 위 쿼리는 무엇을 하는 것일까요? 일단 random()*100이면, 0이상 100미만인 랜덤 실수를 뽑습니다. 그런데 floor가 붙었네요. 바닥 함수이므로, [0, 99]의 랜덤한 정수를 뽑습니다. 70은 0이상 99이하의 정수이니, 해..
여태까지 배운 내용을 바탕으로, 파이썬으로 로또 번호 6개를 중복 없이 뽑는 방법을 알아보겠습니다. c언어 스럽게 짠다면 아래와 같이 작성할 수 있습니다. 먼저, flag를 선언합니다. 이것은 단지, 어떤 수가 뽑혔는지를 나타내는 배열입니다. 5번째 줄부터 6번을 돌려보는데요. r은 구간 [1, 45+1)에 속하는 수 중 하나입니다. 수를 뽑았을 때, flag[r]의 값이 1이라면 루프를 계속 돌고, 그렇지 않으면 r을 선택합니다. r을 선택할 때, flag[r]에 1을 넣어줍니다. 그리고, 선택한 수를 추가해 주면 됩니다. 이렇게 6번을 뽑으면 됩니다. 중복된 수가 나오지 않았음을 볼 수 있습니다. 그런데, 파이썬에는 딕셔너리가 있습니다. 이것은, 중복된 키 값을 저장하지 않습니다. 그렇다면, 아래와 ..
최근댓글