Yuriy Al. Shirokov's Journal

History

28th October 2008

11:47pm: Вопрос знатокам Питона
Читали тут со [info]zmey про парадокс Монти Холла, написали скриптик для наглядной демонстрации (мне самому, прежде всего, я формулам верю меньше, чем коду):

#!/usr/bin/python

from random import randint

wins = 0

for i in range(0, 1000):
    prize = randint(0,2)
    choice = randint(0,2)
    not_choosed = [j for j in range(3) if j != choice]
    goats = [j for j in not_choosed if j != prize]
    random_goat = goats[randint(0, len(goats) - 1)]
    [new_choice] = [j for j in not_choosed if j != random_goat]
    if (new_choice == prize):
        wins += 1
print i, "iterations", wins, "wins"


Ну, типа, если мы нумеруем двери цифрами 0, 1, 2, то prize — номер двери с автомобилем, choice — первоначальный выбор игрока, not_choosed — номера невыбранных дверей, goats — номера тех из невыбранных дверей, за которыми козы, random_goat — номер той из дверей с козой, которую открывает ведущий, new_choice — оставшаяся дверь. А wins это количество выигрышей, понятно.

Собственно, subj: как это сделать изящнее? А то уж больно много строк (и переменных) для такой простой задачки, мне кажется, что из Питона можно выжать больше. Без пренебрежения читабельностью, разумеется.

А про парадокс Монти Холла я прочитал вот в этом посте, который нашёл благодаря вот этой ссылке от [info]azatiy.
Powered by LJ.Rossia.org