Це завдання стосується написання коду, щоб точно обчислити ймовірність. Вихід повинен бути точною ймовірністю, записаною у вигляді дробу в найбільш скороченому вигляді. Тобто вона ніколи не повинна виводити, 4/8
а навпаки 1/2
.
Для деякого додатного цілого числа n
розглянемо рівномірно випадковий рядок довжиною 1s та -1s n
і назвемо його А. Тепер приєднайтесь до A
свого першого значення. Тобто A[1] = A[n+1]
якщо індексація від 1. A
тепер має довжину n+1
. Тепер також розглянемо другий випадковий рядок довжини n
, перші n
значення якого становлять -1, 0 або 1 з вірогідністю 1/4,1 / 2, 1/4 кожне і назвемо його B.
Наприклад, розглянемо n=3
. Можливі значення для A
і B
можуть бути A = [-1,1,1,-1]
і B=[0,1,-1]
. У цьому випадку два внутрішні продукти є 0
і 2
.
Тепер розглянемо внутрішній продукт A[1,...,n]
і B
і внутрішній продукт A[2,...,n+1]
і B
.
Ваш код повинен виводити ймовірність того, що обидва внутрішні продукти дорівнюють нулю.
Бо n=1
така ймовірність однозначно 1/2
.
Я не заперечую, як n
вказано в коді, але це повинно бути дуже простим і очевидним, як це змінити.
Мови та бібліотеки
Ви можете використовувати будь-яку мову та бібліотеки, які вам подобаються. Я хотів би запустити ваш код, тому, будь-ласка, додайте повне пояснення щодо запуску / компіляції вашого коду в Linux.
n=4
зараховується до нуля, двох чи трьох байтів? Чи має бути вихід чи точно, a/b
чи [a b]
, наприклад, буде дозволено?
n
? В іншому випадку я думаю, що це не дозволено.
n
були б корисні. Також може допомогти явний приклад A, B та двох внутрішніх продуктів.