Простой вопрос комбинации / вероятности, основанный на длине строки и возможных символах


9

Предполагая «полную случайность» и получая строку длиной 20 символов, где каждый символ может быть одним из 62 возможных символов:

  • Какое общее количество возможных комбинаций? (Угадай 20 до степени 62.)
  • Кроме того, если новые строки выбираются случайным образом одна за другой и добавляются в список выбранных строк, сколько строк должно быть выбрано до того, как вероятность выбора строки, которая уже была выбрана, будет ниже 1 в 100000 ( 10−5 )

Примечание: 62 состоит из: цифровых цифр (0-9), заглавных букв (AZ) и строчных букв (az).


2
Ваш второй пункт может быть прочитан (по крайней мере) двумя возможными способами. Мне интересно, что вас интересует. ( 1 ) Вероятность того, что n я строка соответствует одной из предыдущих строк, или ( 2 ) Вероятность того, что к моменту выбора n й строки в коллекции будет какой-то дубликат строк, нарисованных до сих пор. Ответы на эти два вопроса будут очень разными. :)
— кардинал

1
Возможно, учитывая двухсимвольный алфавит, разница будет ясна. Пусть буквы будут и T . Мы можем спросить: ( 1 ) Для какого n у нас есть по крайней мере 99% шанс того, что n- я строка будет дубликатом предыдущей строки? Здесь n равно 8, поскольку единственный способ, которым мы терпим неудачу, - это если наша последовательность либо T T T ⋯ T H, либо H H H ⋯ H T , которая имеет общую вероятность 2 - ( n - 1 ) . Или мы спрашиваем ( 2 ) Для чегоHTnnnTTT⋯THHHH⋯HT2−(n−1) ли у нас хотя бы 99% шанс увидеть дубликаты? В этом случае n = 3, поскольку к тому времени, когда мы увидели три строки, H или T были повторены, по крайней мере, один раз. nn=3HT
— кардинал

1
Ответ Мэтта обрабатывает ( 1 ), что, по сути, отвечает на вопрос о том, соответствует ли «моя» строка чужой. Но, если вы беспокоитесь о строках некоторых других двух людей также потенциально подходящих, вы заинтересованы в ( 2 ). Все сводится к тому, есть ли у вас интересующая вас строка, с которой вы сравниваете все остальные, или вы сравниваете все строки друг с другом. Я не уверен, что я делаю это более ясным, хотя. (Ваша проблема сводится к одному из двух вариантов знаменитой так называемой «проблемы дня рождения».)
— Кардинал

1
Кардинал, как обычно, прав. Я предположил, что у вас была одна «целевая» строка, для которой вы генерировали список догадок. Если вместо этого вы генерируете строки в произвольном порядке и хотите знать число, которое можно сгенерировать до совпадения любых двух строк, тогда ответ на самом деле будет совершенно другим. Я исправлю свой ответ, чтобы рассмотреть это дело, если с тобой все в порядке.
— Мэтт Краузе

1
Я не совсем ясно изложил свой предыдущий пример. Прости за это. Я думал о двухбуквенном алфавите и рисовал строки одной длины . Поэтому, когда я писал H H H ⋯ H T , стоявшим на с 1 = H , S 2 = H , ..., S п - 1 = H , S п = Т . {H,T}HHH⋯HTs1=Hs2=Hsn−1=Hsn=T
— кардинал

Ответы:


11

Общее количество возможностей

1) Закрыть! У вас есть 62 вариантов для первого символа, 62 для 2 - го и т.д., так что вы в конечном итоге с , что абсурдно огромное количество.62⋅62⋅62⋅⋯62=6220

Столкновение со строкой «Target»

2) Как мы установили выше, существует потенциальных строк. Вы хотите знать, сколько вам нужно угадать, чтобы иметь больше, чем 1 на 100 000 шансов угадать «целевую» строку. По сути, вы спрашиваете, что х6220 Чтобы получить точный результат, вам нужно округлить х (или добавить один, если они точно равны), но, как вы увидите через секунду, это не имеет значения.

x6220≥1105

Посредством базовой алгебры мы можем изменить это как

105x≥6220105x≥(6.2⋅10)20105x≥6.220⋅1020x≥6.220⋅1015

6.2207⋅10157⋅1030

Именно поэтому длинные пароли работают очень хорошо :-) Для реальных паролей, конечно, вам нужно беспокоиться о строках длиной не более двадцати, что увеличивает количество возможностей еще больше.

Дубликаты в списке

Теперь давайте рассмотрим другой сценарий. Строки генерируются случайным образом, и мы хотим определить, сколько можно сгенерировать до того, как появится шанс совпадения любых двух строк 1: 100 000. Классическая версия этой проблемы называется проблемой дня рождения (или «парадоксом») и спрашивает, какова вероятность того, что двое из n человек имеют одинаковый день рождения. Статья в Википедии [1] выглядит прилично и содержит несколько таблиц, которые могут оказаться полезными. Тем не менее, я постараюсь дать вам ответ на этот вопрос здесь.

Некоторые вещи, которые нужно иметь в виду:

P(match)=1−P(no match)

ABP(A&B)=P(A)⋅P(B)

kkN6220

kNPk=1(no match)=NN=1NPk=2(no match)=N−1NN−2Pk=3(no match)=N−2Nk

Pk(no match)=N−k+1N

k

P(No Matches)=NN⋅N−1N⋅N−2N⋯N−k+1N
P(No Matches)=N⋅(N−1)⋅(N−2)⋯(N−k+1)NkP(No Matches)=N!Nk⋅(N−k)!P(No Matches)=k!⋅(Nk)Nk
k!=(k)⋅(k−1)⋅(k−2)⋯1N−k+1⋯Nk1100,000k100!

k=0.5+0.25−2Nln⁡(p)
N=48,0003.7⋅1015

Ссылки

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

[2] Матис, Фрэнк Х. (июнь 1991 г.). «Обобщенная проблема дня рождения». SIAM Review (Общество по промышленной и прикладной математике) 33 (2): 265–270. JSTOR Ссылка


+1 Удивительно, учитывая, что мои плохие математические навыки привели к тому, что я задал вопрос, поэтому я оставлю вопрос без ответа на один день, но выгляжу хорошо для меня, и мне гораздо яснее ответ, чем я ожидал - спасибо!
— промахи

1
Рад помочь! Дайте мне знать, если что-то неясно. Для ударов я побежал номера. Вам понадобится 7044234255469980229683302646164 догадок; как я уже сказал - много!
— Мэтт Краузе

+1 @Matt Krause: +1 к вашему комментарию под ответом; Ваш ответ и стремление дать лучший ответ возможны, достойны внимания и благодарят вас за всю вашу тяжелую работу!
— промахи
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.