Форум сайта python.su
В одной из вершин правильного п-угольника располагается фишка. На каждом шаге фишку перемещают в одну из соседних вершин с одина- ковыми вероятностями. Найдите среднее количество шагов, за которые фишка обойдет все вершины п-угольника.
Помогите решить пожалуйста очень срочно надо буду очень благодарен :с больше некуда обращаться
Офлайн
Бред)
Задача не верно сформированна.
Ну ответ 3.
А если честно то хрен его знает. Задача не полная.
Офлайн
maybelllОна может бесконечно топтаться на месте и никогда не обойти его.
В одной из вершин правильного п-угольника располагается фишка. На каждом шаге фишку перемещают в одну из соседних вершин с одина- ковыми вероятностями. Найдите среднее количество шагов, за которые фишка обойдет все вершины п-угольника.
Офлайн
py.user.nextНу в том смысле что шагнула на соседа потом назад? С каждым шагом вероятность такого исхода падает. Надо проверять сходимость такого ряда.
Она может бесконечно топтаться на месте и
Отредактировано doza_and (Май 23, 2019 07:56:46)
Офлайн
doza_andВ каждой точке вероятность шага влево и вправо одинаковая. Это всё равно что монетку подбрасывать и ждать, когда выпадут орлы больше раз, чем решки. Это может быть конечно, а может быть бесконечно.
Ну в том смысле что шагнула на соседа потом назад? С каждым шагом вероятность такого исхода падает.
Отредактировано py.user.next (Май 23, 2019 13:45:09)
Офлайн
vlПотише, бред у нас обычно несет py.user.next. А задачи придумывают умные люди)
Бред)
Задача не верно сформированна.
py.user.nextДа, в первый же шаг фишка, сходит с места.
Она может бесконечно топтаться на месте
py.user.nextТут просто бред, не имеющий отношения к делу. Для того чтобы, фишка не отклонялась от своего угла, должен быть постоянный баланс шагов, число шагов влево должно быть равно числу шагов вправо. Если в процессе выбора шагов теряется баланс, то фишка обходит все вершины.
В каждой точке вероятность шага влево и вправо одинаковая. Это всё равно что монетку подбрасывать и ждать, когда выпадут орлы больше раз, чем решки. Это может быть конечно, а может быть бесконечно.
['left', 'right'] * n
py.user.nextПроверим:
никогда не обойти его
# from random import randint def choices(attempt, steps=100): lst = [] max_left = 0 max_right = 0 center = 0 for _ in range(steps): x = randint(0, 1) lst.append(x) if x == 1: center += 1 else: center -= 1 if center > max_right: max_right = center if center < max_left: max_left = center x1 = sum(lst) x0 = len(lst)-x1 diff = x0-x1 # max_shift - показывает max отклонение фишки от своего угла. max_shift = abs(max_left) if abs(max_left) > max_right else max_right return attempt, x0, x1, diff, max_left, max_right, max_shift attempt = 100 fmt = '{:<5} | {:>5} | {:>5} | {:>5} | {:>5} | {:>5} | {:>5}' print(fmt.format(*'# x0 x1 x0-x1 left right shift'.split())) for i in range(1, attempt+1): t = choices(i) print(fmt.format(*t))
Отредактировано Vladimirv (Май 24, 2019 19:56:09)
Офлайн
VladimirvА на второй шаг возвращается обратно. На третий шаг снова сходит с места, а на чётвертый шаг возвращается обратно.
Да, в первый же шаг фишка, сходит с места.
VladimirvОна может дойти и до конца, но вернуться обратно в исходное положение тем же путём.
Для того чтобы, фишка не отклонялась от своего угла, должен быть постоянный баланс шагов, число шагов влево должно быть равно числу шагов вправо.
VladimirvА почему у тебя шагов только 100? Сделай бесконечный цикл.
У меня минимальный shift был 3, максимальный 31 при 100 шагах.
VladimirvЗадачу-то можешь придумать и ты Таких онлайн школ куча, где с умным видом не учат ничему.
А задачи придумывают умные люди)
Офлайн
Если абстрагироваться от фишки передвигающейсмя по вершинам то py.user.next абсолютно прав
py.user.nextСоответвенно тут задача чисто на теорвер, и пайтон так, сбоку.
В каждой точке вероятность шага влево и вправо одинаковая. Это всё равно что монетку подбрасывать и ждать, когда выпадут орлы больше раз, чем решки.
py.user.nextбесконечно оно быть не может, так как вероятность что фишка обойдет все вершины отлична от 0.
Это может быть конечно, а может быть бесконечно.
import random def experiment(n): #функция "подбрасывает" монетку пока разница выпадений одной из сторон не будет равна n variants = (0, 1) avers, revers = 0, 0 count = 0 while abs(avers - revers) < n: if random.choice(variants) == 0: avers += 1 else: revers += 1 count+=1 return count def average_count(n, m): # функция проводит m испытаний и выводит среднее знанчение результатов res_list =[] for i in range(m): res_list.append(experiment(n)) return sum(res_list)/m m = 100000 for n in range(12): print('вершин:', n, 'ходов в среднем:' , average_count(n-1, m))
[code python][/code]
Отредактировано PEHDOM (Май 26, 2019 09:21:12)
Офлайн
PEHDOMНу то есть либо обойдёт, либо нет. Или скорее всего обойдёт, но иногда, может быть, и не обойдёт. Какова вероятность, что не обойдёт?
бесконечно оно быть не может, так как вероятность что фишка обойдет все вершины отлична от 0.
3. Условная вероятность события. Теорема умножения вероятностей зависимых событий.
Событие В называют зависимым от события А, если появление события А изменяет вероятность появления события В.
Вероятность события В, найденная при условии, что событие А произошло, называется условной вероятностью события В и обозначается РА (В).
Теорема: Вероятность совместного появления двух зависимых событий А и В равна произведению вероятности одного из них на условную вероятность другого, найденную в предположении, что первое событие уже наступило, т.е.
Р(АВ) = Р(А) * РА (В) или Р(АВ) = Р(В) * РВ(А)
PEHDOMБлин, я ещё не дошёл до такой степени заинтересованности.
я таки почитал вики, освежил знания
Отредактировано py.user.next (Май 26, 2019 02:45:25)
Офлайн
py.user.next
Ну то есть либо обойдёт, либо нет. Или скорее всего обойдёт, но иногда, может быть, и не обойдёт. Какова вероятность, что не обойдёт?
import random def experiment(n): #функция двигает фишку в слкчайном направлении по n угольнику пока не пройдет все вершины variants = (-1, 1) n_angle = [0 for x in range(n)] n_angle[0]=1 count = 0 pos = 0 while 0 in n_angle: pos += random.choice(variants) if pos < 0: pos = n-1 if pos == n: pos = 0 n_angle[pos]= 1 count+=1 return count def average_count(n, m): # функция проводит m испытаний и выводит среднее знанчение res_list =[] for i in range(m): res_list.append(experiment(n)) return sum(res_list)/m m = 100000 for n in range(1, 13): print('вершин:', n, 'ходов в среднем:' , average_count(n, m)) >>> вершин: 1 ходов в среднем: 0.0 вершин: 2 ходов в среднем: 1.0 вершин: 3 ходов в среднем: 2.99767 вершин: 4 ходов в среднем: 5.99524 вершин: 5 ходов в среднем: 9.99776 вершин: 6 ходов в среднем: 15.00188 вершин: 7 ходов в среднем: 20.99545 вершин: 8 ходов в среднем: 28.02448 вершин: 9 ходов в среднем: 35.97836 вершин: 10 ходов в среднем: 44.96916 вершин: 11 ходов в среднем: 55.04097 вершин: 12 ходов в среднем: 66.09011 >>>
[code python][/code]
Отредактировано PEHDOM (Май 26, 2019 09:47:11)
Офлайн