Advertisement
uriid1

Парадокс Монти Холла | Lua 5.2+

Jan 12th, 2024 (edited)
1,142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.70 KB | None | 0 0
  1. -- https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%A5%D0%BE%D0%BB%D0%BB%D0%B0
  2. math.randomseed(os.time())
  3.  
  4. -- Будет ли игрок менять дверь
  5. local IS_PLAYER_SWITCH_DOOR = true
  6.  
  7. --
  8. local DOOR_COUNT = 3
  9. local CAR = 1
  10. local GOAT = 0
  11.  
  12. -- Кол-во побед
  13. local wins = 0
  14. -- Кол-во проигрышей
  15. local overs = 0
  16.  
  17. for i = 1, math.huge do
  18.   -- Расстановка коз и машины
  19.   local doors = {GOAT, GOAT, GOAT}
  20.   doors[math.random(DOOR_COUNT)] = CAR
  21.  
  22.   -- Игрок делает ход
  23.   local playerChoice = math.random(DOOR_COUNT)
  24.  
  25.   local percentWins = ((wins / i) * 100)
  26.   local fmtStr = 'Игра: %d | Побед: %d | Поражений: %d | Процент побед: %.1f%%'
  27.  
  28.   if playerChoice == CAR then
  29.     print('Выигрыш '..fmtStr:format(i, wins, overs, percentWins))
  30.     wins = wins + 1
  31.     goto continue
  32.   end
  33.  
  34.   -- Игрок выбирает менять дверь, или оставить
  35.   if not IS_PLAYER_SWITCH_DOOR then
  36.     print('Проигрыш '..fmtStr:format(i, wins, overs, percentWins))
  37.     overs = overs + 1
  38.     goto continue
  39.   end
  40.  
  41.   -- Игрок выбрал сменить дверь
  42.   local newPLayerChoice = math.random(DOOR_COUNT)
  43.   while newPLayerChoice == playerChoice do
  44.     newPLayerChoice = math.random(DOOR_COUNT)
  45.   end
  46.  
  47.   if newPLayerChoice == CAR then
  48.     print('Выигрыш. Смена двери '..fmtStr:format(i, wins, overs, percentWins))
  49.     wins = wins + 1
  50.   else
  51.     print('Проигрыш. Смена двери '..fmtStr:format(i, wins, overs, percentWins))
  52.     overs = overs + 1
  53.   end
  54.  
  55.   ::continue::
  56. end
Tags: lua
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement