안녕하세요.
이번에도 잡다한 주제로 찾아온 저입니다. (_ _)
최근 글을 읽어보는데 카니타로의 3카드 뽑기의 원리가
이미 만들어진 배열을 보여주는 것이라는 글이 있더라구요.
저의 생각은 랜덤으로 뽑히는 것이 맞을 것이다, 이에요.
왜 그렇게 생각하는지를 설명하는 글을 적어보면서
개발자의 입장에서 앱타/웹타의 원리를 살짝 적어볼까 하여 오랜만에 왔습니다.
* 이 글은 자동 카뽑의 원리와 구현방식에 대해서 다룹니다.
원리와 구현 방식에 대해서 관심이 없으신 분께서는
결론만 읽으시면 좋습니다. *
1. 컴퓨터의 랜덤은 진짜 랜덤이 아니다
랜덤이란 사건이 계속하여 발생할 때
사건들 사이에 규칙성이 없는 경우를 말합니다. (= 무작위)
그리고 우리는 타로 카드를 자동으로 뽑을 때(앱타/웹타)
무작위로 뽑히기를 기대합니다.
하지만 컴퓨터는 그저 성능이 좋은 계산기일 뿐입니다.
어떠한 정해둔 규칙(알고리즘)을 주고, 값을 넣으면
규칙에 따른 결과를 알려주는 성능 좋은 계산기일 뿐이죠.
하지만 랜덤, 즉 무작위는 규칙성이 존재하면 안 되기에
컴퓨터로는 진정한 무작위 선택을 할수 없습니다.
그래서 '의사 난수' 라고 하는 알고리즘을 사용하게 됩니다.
의사 난수란 사람처럼 무작위로 수를 선택하지는 못하지만,
최대한 비슷하게 흉내내는 알고리즘(규칙)을 의미합니다.
실제 알고리즘에 대해서 궁금하신 분께서는
아래 참고한 글(링크)를 보시면 좋을듯 합니다.
(이 부분은 관련 지식이 있는 분만 읽으시는걸 권장합니다)
[추가내용 : AI 기술로도 진정한 무작위를 만들지 못하는 이유]
세상의 모든 작업을 이분법적으로 나누어 보면 이렇게 분류될 수 있습니다.
컴퓨터로 가능한 작업 / 컴퓨터로 불가능한 작업
여기서 컴퓨터로 가능한 작업은 당연히 사람이 할수 있는 작업이며,
컴퓨터로 불가능한 작업 중에는 사람만이 할수 있는 작업이 넘쳐납니다.
사람은 규칙을 주면 그 규칙에 맞추어 답을 낼수 있습니다.
컴퓨터도 규칙을 주면 그 규칙에 맞추어 답을 낼수 있습니다.
하지만 답을 주고 규칙을 찾아내는 것은 어떨까요?
사람은 답을 주면 규칙을 찾아낼 수 있는 존재입니다.
컴퓨터는 그러지 못합니다.
기술이 발달하기 전을 예시로 들어본다면, 어느 사진이 고양이인지 맞히는 작업이 있을 것입니다.
컴퓨터는 규칙을 주어야 답을 낼 수 있는데-
어떤 것이 고양이이고, 어떤 것이 아닐까요?
몇가지 규칙으로 완벽하게 분류할 수 있을까요?
가령 '고양이는 네 다리를 가진 것이다' 라는 규칙을 준다고 한들,
분명 세상에는 세 다리만 가지고 있는 고양이도 있을 것이기에 완벽하게 분류해낼수 없습니다.
그래서 사람들은 컴퓨터가 사람의 두뇌처럼 동작할 수 있도록 하고 싶어했으며
사람만이 할 수 있었던 작업을 컴퓨터도 가능하도록 만들고 싶었습니다.
그 결과가 흔히 말하는 머신 러닝, AI입니다.
여러 머신 러닝 기법들 중에는 인간의 뉴런 시스템을 모방한 딥 러닝이 있는데
기사나 뉴스에서 종종 접하게 되는 AI, 딥러닝 등의 개념은 이런 내용에서 나온 것입니다.
사람처럼 답만 주어도 규칙을 알아서 찾아내도록 하려는 시도인 것이죠.
그렇기에 AI로도 아직까지는 완벽한 랜덤을 구현할 수 없는 것입니다.
머신 러닝은 어떠한 규칙을 찾아내려는 것이 목적이고,
무작위와 규칙성은 양립할 수 없기 때문입니다.
(여기까지)
2. 컴퓨터에서의 랜덤 구현
저희는 지금까지 컴퓨터로는 완벽한 무작위 선택을 할 수 없다는 것을 알게 되었습니다.
그렇다면 실제 앱타/웹타에서는 어떻게 자동으로 3카드 선택을 해줄까요?
어떤 값을 정해진 규칙에 넣었을 때, 그 결과가 최대한 무작위여야 하므로
(여기서 규칙은 '값이 들어오면 100을 곱해서 3으로 나눈다' 같은 규칙입니다.)
보통은 넣는 값이 자동적으로 바뀌도록 세팅을 합니다.
넣는 값이 규칙성을 띈다면 결과도 규칙성을 띌 것이니까
현재 시각같이 불규칙한 값을 넣곤 합니다.
지금의 시간은 다시 돌아오지 않기 때문입니다.
원리가 꽤나 복잡하단 생각이 듭니다, 그렇지만 실제 개발자가
랜덤선택 기능을 프로그램에 넣고 싶을 때에는 어떻게 하면 될까요?
매우 간단합니다.
대부분의 프로그래밍 언어(앱타/웹타를 만들기 위해 사용)는
기본 기능으로 이런 랜덤 선택을 갖추고 있습니다.
그러니 개발자의 입장에서는
타로 앱타/웹타의 경우 미리 조합을 저장해두고 내보내는 것보다는
간단하게 랜덤선택을 하도록 하는게 편합니다.
제가 자주 쓰는 '파이썬' 이라는 프로그래밍 언어를 보면
'random()' 단어 하나로 무작위 선택이 끝납니다.
저는 위처럼 자동 3카드 선택 프로그램 등을 만들어본 경험이 있는데요,
위의 프로그램을 활용해서 타갤 리딩/카뽑도 여러번 했었습니다.
위의 프로그램 코드가
웨이트에서 3카드를 자동으로 뽑아주는 프로그램의 코드 일부입니다.
질문에 맞추어 세가지의 3카드 배열을 자동으로 만들어 두고,
1,2,3 중 하나를 선택하면 그 3카드 배열을 보여주도록 하는 것이죠.
개발자의 입장에서는
한두줄 코드를 작성하는 것으로
무작위 선택을 할 수 있다는 것입니다.
위의 사진은 저 프로그램을 작동시켰을 때 보이는 화면입니다.
3. 결론
이러한 원리와, 이러한 방법으로
앱타나 웹타를 만드는 개발자가 카드 랜덤선택을 해 주게 됩니다.
개발자의 입장에서는
3카드 조합을 몇십 ~ 몇백가지를 미리 정해두고
정해진 배열을 알려주는 것이
랜덤으로 선택해서 알려주는 것보다 훨씬 번거롭습니다.
그러니 앱타나 웹타가 랜덤으로(제대로) 안 뽑아주는게 아닐까?
하는 걱정은 조금 내려놓아도 좋을 것 같습니다.
참고한 글 : 컴퓨터가 만드는 랜덤은 정말로 랜덤할까?
추신 :
제가 이 글을 쓰면서
카니 타로 사이트에 들어가서 사이트 소스코드(php, js)를 좀 뜯어봤는데요,
자동으로 카드를 선택해주는 기능이 있는 소스코드는 숨겨두어 직접 확인은 못 했지만
카니 또한 비슷한 방식으로 자동 선택 기능을 구현했을 것이라 생각합니다.
근데 저 요새 카니에서 수동으로 뽑는데도 바로 이전에 뽑앗던 카드가 그대로 나올때가 많아요. 자동이 아닌 수동인데도요 제가 완전히 똑같은 카드를 똑같은 순서로 두번연속 뽑을 가능성이 얼마나 낮은데 이런경우가 너무 자주생겨서 도대체 이건 왜이런건가요
나도 이래....뽑았던 카드들 ㅈㄴ많이 나와 주제가 전혀 다른데;;;;;;
님들이 수학을 잘 몰라서 그러는 거 아닐까요? 타로 보다 확률이 더 극악인 로또 조차도 저번주 당첨 번호 중 하나인데 이번 주 당첨 번호로 나오는 일이 거의 매주 있어요. 그래서 사람들이 막 번호 분석을 하려 들죠.
거두절미 하고 다 떠나서, 개발자가 굳이 배열을 미리 만들어 둬서 개발자가 얻는 이득이 전혀 없다는 거죠. 번거롭기만 하고, 본인이 만든 카드 뽑는 프로그램도 완성도만 그 만큼 떨어지니까요.
한번정도의 우연은 가능하겠지만 하루에 같은현상이 몇번이고 발생하면 그걸 이상하다고 생각하지않고 넘어가는게 더 멍청한거 아닙니까ㅋㅋㅋㅋㅋㅋㅋㄱㄲ
제가 저런현상을 겪기 시작한게 얼마전에 카니타로가 갑자기 불안정해지면서 서버가 다운되적이 있었는데 그이후부터예요 그전에는 같은현상을 겪은적이 없습니다
애초에 하루에 같은 현상이 몇 번이고 발생 했다면 모두가 "카니"라는 사이트에 의심을 했겠죠. 아무래도 이상하다. 이런식으로요. 고집만 죽어라 부리시는 것 같은데 ■ 그래서 굳이 배열을 만들어서 개발자가 얻는 이득은요? ■ 하루에도 같은 현상이 몇번이고 발생 했다면 개발자가 만들어둔 배열이 애초에 몇 개 없다는 소리인데 다른 사람들도 님이 본 카드와 똑같은 카드만 뽑아야죠? ■ 그러면 이때까지 카니 사이트 위주로 상담이 진행 되었고 실력 있는 타로마스터 상담은 찍어서 맞출 수 있는 범위를 넘어서 정확한 내용도 있었는데 이런 게 다 우연의 일치 이거나 그런거 라는 뜻?
제 댓글 몇개단게 죽어라고집부리는걸로 보이시는건가요? 저는 제가 겪은 현상을 썼을뿐이고 모두가 내말에 공감할거라는 가정으로 쓴게 아닌 나만 이렇게 느끼는건가에 대해서 의견을 구함이지ㅋㅋ 근데 첫댓부터 다짜고짜 니가 수학을 몰라서다 하면서 깔아뭉개고 시작하고 내말 한방에 이정안하면 고집부리는거ㅇㅇ 라는 자세로 댓글달고 계시네요ㅋㅋ 제가 프로그래밍을 하는사람도 아닌데 무료사이트를 운영하는 사람들의 이익구조를 왜생각합니까? 나도 잘만 쓰던 사이트가 한번 다운되고나서 이상하다고 느끼니까 댓글한번 달았던거지 뭔말만하면 왕왕왕 어휴
안녕하세요, 그 부분에 대한 제 생각은 이렇습니다. 서버가 불안정해진 이후로 그런 증상을 겪으셨다면, 서버 컴퓨터에 오류가 발생하여 그 여파로 같은 카드가 연속해서 나오는 증상이 생겼을 수도 있어보입니다. 제 글은 어디까지나 개발자가 의도하여 미리 설정해둔 배열만 나오게 하지 않았을 것이라는 설명을 담고 있습니다. 컴퓨터의 오류 등으로 문제되는 증상이 생긴다면 그것은 별개의 문제입니다. ㅠㅠ
개발자가 의도하진 않았지만 뽑았던 카드가 연속으로 나오는 등의 문제가 있다면 사이트를 운영하는 개발자가 오류를 고쳐야 할듯 합니다. 외국 3카드 카뽑 사이트도 여럿 있는 것으로 알고 있는데요, 문제가 지속되면 잠시 다른 사이트에서 카뽑을 받아보시는 것도 좋을것 같습니다.
댕댕님 안그래도 요새는 ys타로를 많이 쓰고있어요 그래도 카니돌리는 손맛이 있는데 아쉽더라구요ㅜ '저만' 이상하다고 느끼는거 한번 댓글달았다가 자꾸 알람가게된거같아 죄송하네요 프로그래밍을 모르는 저는 컴퓨터가 완전 무작위가 가능한줄 알았는데 그거도 무작위에 가깝게만 가능하다는것도 처음 알았네요 좋은글 잘읽었습니다
네, 최근 제가 올리는 글들은 많이 올라오는 임상, 타로 팁같은 글은 아니라서 어떤 분들은 이상하게 생각하시기도 하시지만 제 글이 누군가에게 도움이 되거나 영감을 주는 존재로 작용했으면 하는 마음입니다 :) 좋은 새벽 보내세요.
오오 문외한이지만 흥미로운 글이에요!! 그럼 자동은 어느 정도 랜덤하게 뽑힌다는거 같은데 수동은 어떨까요?? 진짜 실카 뽑을 때랑 거의 비슷한 원리로 뽑을 수 있을까요?
제 생각엔 1부터 78까지 각각 한 카드씩 지정이 돼있고 스프레드될 때 자동 때처럼 랜덤으로 배열되기만 하면 수동도 실제랑 비슷하게 사용 가능할 것 같아요
이건 카니타로에서 보여지는 부분으로 설명할 수 있습니다. 수동 선택 탭을 골라서 들어갈 때(카드가 펼쳐져있을 때) 그 시점에 이미 모든 카드들은 랜덤으로 순서가 정해져 있고, 사용자가 선택한 카드를 단순히 보여주도록 하는 것 같습니다. 선택하는 페이지를 새로고침하면 카드의 배열도 달라집니다. 어떤 순서에 어떤 카드가 있는지를 보여주지 않는 것 뿐입니다. (코드로 보면 선택할 때에 카드들의 순서가 보입니다)
자세한 설명 감사합니다! 카니 수동은 실제 뽑는거랑 거의 다르지 않을거라 머리론 생각하면서도 왠지 그냥 '오리지날'하지 않은 느낌이라 괜스레 찝찝해서 나중에 실카로 또 뽑아보곤 했거든요ㅋㅋ 앞으론 좀 더 확신을 가질 수 있을 것 같습니다. 그래도 정작 중요한거 뽑을 땐 실카를 꺼내겠지만..ㅋㅋ
ㅎㅎ 어떤 찝찝함인지 공감이 되네요. 저는 그래서 그런 부분을 해결하려고 카뽑 프로그램을 만들 때 자동으로 뽑아주지만 질문에 맞는 답을 잘 내놓을 수 있도록 여러 장치를 고안했었어요. 앱타 수동이 아무래도 실카뽑을 따라가지 못한다면, 차라리 아예 결이 다른 앱타 자동 시스템을 만들어버리자 하는 생각이었죠. ㅎㅎ :)
가정부터 틀린거 아님? 어플은 실카랑 정확도부터 차이 나는데
글에 자세하게 쓰진 않았지만, 실카와 앱타는 같지 않은 것도 맞습니다. 사실 우리가 실카로 카드를 뽑을 때에는 완벽하게 무작위로 뽑히길 바라는 것이 아니긴 합니다. 무작위가 아니더라도 질문에 답을 해주는 카드가 나오길 바라죠. 그래서 느낌이 오는 카드를 뽑고 그러니까요. 제 글은 자동 카뽑 사이트/어플을 만든 사람들이 의도적으로 몇백 가지의 배열을 정해두고 그 안에서만 나오게 하진 않았을 것이다, 모든 경우가 다 나올수 있도록 개발했을 것이다 이런 설명을 하는 글이었습니다.
생각해보면 수동이야 랜덤으로 섞이고 나서 자신이 뽑으니 실카랑 비슷하다고 할 수 있지만, 자동으로 뽑아주는 것은 작동 방식 자체는 무작위로 모든 경우 중 하나를 보여주는 것이니 우리가 실카를 뽑을 때 기대하는 것과는 다를수 있습니다. (그래서 저도 카니 쓸 때에는 항상 수동만 썼습니다.) 하지만 이미 타로 자체가 말로 표현할 수 있는 것 너머 있는 것이니 자동 카뽑의 작동 원리가 다르더라도 우리가 알 수 있는 것 너머의 이유로 질문에 답을 해줄 수 있는 카드가 나오리라 믿는 것이라 생각합니다.
정리하자면 이 글은 실카 = 앱타 를 주장하는 글이 아니며, 단지 자동 앱타는 조작해둔 카드만 나오도록 설계하진 않았을 것이다는 내용입니다. 위처럼 개발자가 의도하지 않았지만 오류로 그렇게 될 수 있다거나 어플과 실카의 정확도와는 관련이 없는 글입니다.
난수 생성 설명하는 글에 미신적인 정확도 들이대는거보니 넌 이해를 못했구나.
결론은 컴퓨터의 랜덤은 인간이 아는 랜덤 방식과는 다르지만, 프로그래머가 절대 배열을 미리 만들어 두고 로테이션으로 보여주는 방법은 쓰지 않았을거다 이거네요.
네, 정확하게 이해하셨습니다. 글 읽어주셔서 감사합니다.
얘 말투도ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
앗.. 저는 자동 광고차단 기능을 써서 평소 카니타로에 광고가 걸려있는줄 몰랐네요.