문자열 길이와 가능한 문자를 기반으로 한 간단한 조합 / 확률 질문


9

"완전한 임의성"을 가정하고 각 문자가 62 개의 가능한 문자 중 하나 일 수있는 길이가 20자인 문자열이 제공됩니다.

  • 가능한 총 조합 수는 얼마입니까? (20을 62의 거듭 제곱으로 추측)
  • 또한 새 문자열을 하나씩 무작위로 선택하여 지금까지 선택한 문자열 목록에 추가 한 경우 이미 선택된 문자열을 선택하기 전에 몇 개의 문자열을 선택해야합니까?105)?

참고 : 62는 숫자 (0-9), 대문자 (AZ) 및 소문자 (az)에서 비롯됩니다.


2
두 번째 글 머리 기호는 두 가지 가능한 방법으로 읽을 수 있습니다. 어떤 것에 관심이 있는지 궁금합니다. ( 1 )nth 문자열은 이전 문자열 중 하나와 일치하거나 ( 2 )n문자열이 선택 되면 지금까지 그려진 문자열 모음에 일부 중복 이 있습니다 . 이 두 질문에 대한 답변은 매우 다릅니다. :)
추기경

1
아마도 두 글자 알파벳을 고려하면 차이가 분명해질 것입니다. 글자를 보자HT. 우리는 요청할 수 있습니다 : ( 1 )n 우리는 적어도 99 %의 확률로 n문자열이 이전 문자열의 복제본입니까? 그만큼n 우리가 실패하는 유일한 방법은 시퀀스가 TTTTH 또는 HHHHT총 확률이있는 2(n1). 또는, 우리는 ( 2 )n우리는 적어도 99 %의 확률로 복제본을 볼 수 있습니까? 이 경우n=3 그때까지 우리는 세 줄을 보았 기 때문에 H 또는 T적어도 한 번 반복되었습니다.
추기경

1
Matt의 답변은 ( 1 ), 본질적으로 "my"문자열이 다른 사람의 문자열과 일치하는지에 대한 질문에 답변합니다. 당신은 몇 가지 다른 두 사람의 캐릭터에 대해 걱정하는 경우에, 또한 잠재적으로 일치, 당신은 (에 관심이있는 2 ). 다른 모든 문자열을 비교하려는 특정 관심 문자열이 있는지 또는 모든 문자열을 서로 비교하는지 여부가 중요합니다. 그래도 더 명확하게하고 있는지 확실하지 않습니다. (문제는 유명한 소위 "생일 문제"의 두 가지 변형 중 하나로 요약됩니다.)
추기경

1
추기경은 평소와 같이 정확합니다. 나는 당신이 하나의 "대상"문자열을 가지고 있다고 가정했는데, 당신은 추측 목록을 생성하고있었습니다. 대신 무작위로 문자열을 생성하고 두 문자열이 일치하기 전에 생성하기에 안전한 숫자를 알고 싶다면 대답은 실제로 매우 다릅니다. 괜찮다면 그 사건을 해결하기 위해 답변을 수정하겠습니다.
Matt Krause

1
이전 예제를 완전히 명확하게하지 않았습니다. 미안합니다. 나는 두 글자 알파벳을 생각하고 있었다{H,T}길이가 1 인 문자열 그리기 . 그러므로 내가 쓸 때HHHHT, 서있는 s1=H, s2=H, ..., sn1=H, sn=T.
추기경

답변:


11

총 가능성

1) 닫습니다! 첫 번째 캐릭터는 62 개, 두 번째 캐릭터는 62 개 중에서 선택할 수 있습니다.62626262=6220이는 엄청나게 큰 숫자입니다.

"대상"문자열과의 충돌

2) 위에서 설정 한대로 6220잠재적 인 문자열. "대상"문자열을 추측 할 확률이 10 만 분의 1로 1보다 낫다고 추측해야하는 사람 수를 알고 싶습니다. 본질적으로, 당신은 무엇을 요구하고 있습니다

x62201105
그것을 알아 내기 위해서는 x를 반올림해야합니다 (또는 정확하게 같으면 하나를 추가해야하지만) 잠시 후에 볼 수 있듯이 실제로 중요하지 않습니다.

기본 대수를 통해

105x6220105x(6.210)20105x6.2201020x6.2201015

수학을하면 6.220 에 관한 것입니다 71015그래서 모든 것을 불러 봅시다. 71030 또는 더 간결하게 말해서, 전체적으로 많은 것들.

물론 긴 암호가 실제로 잘 작동하는 이유는 다음과 같습니다.

목록에 중복

이제 다른 시나리오를 생각해 봅시다. 문자열은 무작위로 생성되며 두 문자열이 일치 할 확률이 1 : 100,000가되기 전에 생성 할 수있는 수를 결정하려고합니다. 이 문제의 고전적인 버전을 생일 문제 (또는 '패러독스')라고하며 n 명 중 2 명이 같은 생일을 가질 확률을 묻습니다. wikipedia article [1]은 괜찮아 보이고 유용 할만한 몇 가지 테이블이 있습니다. 그럼에도 불구하고, 나는 당신에게도 여기에 대한 답을 맛 보도록 노력할 것입니다.

명심해야 할 사항 :

-일치 할 확률과 일치하지 않을 확률은 1이어야합니다. P(match)=1P(no match) 그 반대.

두 개의 독립적 인 이벤트 AB, 확률 P(A&B)=P(A)P(B).

답을 얻으려면 고정 된 수의 문자열과 일치하지 않는 확률을 계산하여 시작하겠습니다. k. 이를 수행하는 방법을 알고 나면 해당 방정식을 임계 값 (1 / 100,000)과 동일하게 설정하고k. 편의를 위해 전화합시다N 가능한 문자열 수 (6220).

우리는 목록을 아래로 걸어 가서 확률을 계산할 것입니다. k^ {th} 문자열은 목록에서 "위"에있는 문자열과 일치합니다. 첫 번째 문자열에는N 전체 문자열과 목록에 아무것도 없으므로 Pk=1(no match)=NN=1. 두 번째 줄에는 여전히N 전체 가능성이지만 그 중 하나가 첫 번째 문자열에서 "사용"되었으므로이 문자열과 일치 할 확률은 Pk=2(no match)=N1N 세 번째 문자열의 경우 두 가지 방법으로 일치시킬 수 있습니다. N2 하지 않는 방법 Pk=3(no match)=N2N등등. 일반적으로k다른 문자열과 일치하지 않는 문자열은

Pk(no match)=Nk+1N

그러나 우리는 k문자열. 모든 사건이 독립적이므로 (질문에 따라) 다음과 같이 이러한 확률을 곱할 수 있습니다.

P(No Matches)=NNN1NN2NNk+1N
그것은 조금 단순화 될 수있다 : 첫 번째 단계는 분수를 곱한 것이고 두 번째 단계는 계승의 정의 ( ) 의 곱을 좀 더 관리하기 쉬운 것으로 바꾸고 마지막 단계는 이항 계수로 바꿉니다. 이것은 문자열 을 생성 한 후 전혀 일치하지 않을 확률에 대한 방정식을 제공합니다 . 이론적으로는 과 동일하게 설정할 수 있습니다.
P(No Matches)=N(N1)(N2)(Nk+1)NkP(No Matches)=N!Nk(Nk)!P(No Matches)=k!(Nk)Nk
k!=(k)(k1)(k2)1Nk+1Nk1100,000및 풀기 . 실제로, 당신은 거대한 숫자로 곱하거나 나누기 때문에 답하기가 어려울 것입니다-팩토리얼은 정말 빠르게 커집니다 ( 은 150 자리 이상입니다).k100!

그러나 계승 계산과 전체 문제에 대한 근사치가 있습니다. 이 논문 [2]은 제안합니다. 여기서 p는 일치하지 않는 확률입니다. 그의 테스트는 최대치 이지만 여전히 정확합니다. 당신의 숫자를 연결하면 약 됩니다.

k=0.5+0.252Nln(p)
N=48,0003.71015

참고 문헌

[1] http://en.wikipedia.org/wiki/Birthday_problem

[2] Mathis, Frank H. (1991 년 6 월). "일반적인 생일 문제". SIAM 검토 (산업 및 응용 수학을위한 사회) 33 (2) : 265–270. JSTOR 링크


+1 굉장히 수학 능력이 떨어지면 질문을하게되었으므로, 하루 동안 질문에 답하지는 않지만 나에게 잘 어울리고 예상보다 답변이 더 명확합니다. 감사합니다!
실수 2 :

1
기쁘다! 불분명 한 것이 있으면 알려주세요. 차기 위해, 나는 숫자를 달렸다. 7044234255469980229683302646164 추측이 필요합니다. 내가 말했듯이-많이!
매트 크라우스

@Matt Krause +1 : 답변 아래 댓글에 +1; 최선의 답변을 드리 겠다는 귀하의 답변과 헌신은 모범적이고 주목할 가치가 있으며 모든 노력에 감사드립니다!
blunders
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.