Задача 4-6: Вместо одного случайного элемента массива выбирается несколько

[А] Анатолий Шалобасов, 21 июля 2016, 19:51 , 2 подписчика

Как и в подсказках, было сказано что можно двумя путями обыграть задачу. В одном случае использовать rand, а во втором просто добавить в массив больше "0" и "1", и как я понял любое другое число в единичном экземпляре , такое которое будет служить выпадение для случая "Выпало ребро". Вроде бы и массив задаю правильно и функцию применяю как надо, но сама программа выдает нормально то случай с выпадение "0", и пишет что "Выпал орел", В других случаях или ничего не пишет или пишет сразу "Выпала решка","Выпал орел". Не могу понять в чем ошибка.

Обсуждение (3)


Вадим Венедиктов Учитель

[В]

Вы совершили довольно распространенную ошибку: вместо того, чтобы сохранить случайное число, полученное из массива, вы получили случайное число трижды.

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

Напишите так и запустите монетку ;)


Анатолий Шалобасов

[А]

Я вас понял!Спасибо огромное, да затупил сильно, извиняюсь за то вы так долго отвечали на простой вопрос, должен был понять сам. В следующий раз буду стараться таких простых вопросов не задавать!Спасибо большое за такой подробный ответ!


Вадим Венедиктов Учитель

[В]

Анатолий, не стесняйтесь простых вопросов ;)