Как и в подсказках, было сказано что можно двумя путями обыграть задачу. В одном случае использовать rand, а во втором просто добавить в массив больше "0" и "1", и как я понял любое другое число в единичном экземпляре , такое которое будет служить выпадение для случая "Выпало ребро". Вроде бы и массив задаю правильно и функцию применяю как надо, но сама программа выдает нормально то случай с выпадение "0", и пишет что "Выпал орел", В других случаях или ничего не пишет или пишет сразу "Выпала решка","Выпал орел". Не могу понять в чем ошибка.
Вы совершили довольно распространенную ошибку: вместо того, чтобы сохранить случайное число, полученное из массива, вы получили случайное число трижды.
if (monetka.sample == 1)
puts "Выпала решка"
end
if (monetka.sample == 0)
puts "Выпал орел"
end
if (monetka.sample == 2)
puts "Выпало ребро"
end
Смотрите, каждый раз, когда вы пишете monetka.sample
, из массива берётся случайный элемент. Первый раз вы смотрите, равен ли он 1
и если равен, то пишете "Выпала решка"
, потом снова берете новый элемент из массива и сравниваете его с 0
. Снова может так случайно получиться, что этот новый случайный элемент будет равен 0
и программа напишет "Выпал орел"
. Ну и так далее. В самом редком случае (если очень долго запускать), можно добиться всех трёх строчек :)
Вам надо один раз получить случайное значение из массива, сохранить его в какую-нибудь переменную и использовать во всех трёх местах:
result = moneta.sample
if (result == 1)
puts "Выпала решка"
end
if (result == 0)
puts "Выпал орел"
end
if (result == 2)
puts "Выпало ребро"
end
Напишите так и запустите монетку ;)