Доброго времени суток, Уважаемые коллеги. Задача 2-4. Сумма случайных бросков кубиков. Написал метод. Вставил в программу, но с суммой возникла путаница. Сначала был путаница с файлом ответа, но совместно с Михаилом её решили. Однако, то ли осознание пришло потом, то ли что-то ещё...
Гитом специально откатил до проблемного места, и вытащил сюда. Просьба коллег по цеху помочь разобраться в коде, кажется впервые "смотрю в код - вижу ассемблер" =Е
Результат такой: sum of 5, sum of 4, sum 6.......etc.
def show_rolling_dice
100.times do
print "#{rand(6) + 1}\r"
sleep 0.001
end
end
puts "How many dice?"
num = gets.to_i
num.times do
array = []
sum = 0
show_rolling_dice
puts rand(6) + 1
array = rand(6) + 1
sum += array
puts "sum of #{sum}"
end
Вот такой ответ в терминале, при выполнении.
6
2
4
2
sum of 2
5
2
3
2
sum of 6
2
1
2
5
sum of 4
2
3
6
sum of 5
RubyMine 2018.2.4 Build #RM-182.4505.55, built on October 8, 2018 JRE: 1.8.0_152-release-1248-b8 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 10 10.0
из цикла "do" вынеси создание массива и переменной sum, а также вывод результата И еще вот тут: puts rand(6) + 1 array = rand(6) + 1 у тебя каждый раз будет новое случайное число, т.е. в массив ты запишешь не то, что вывел на экран, поэтому сумма будет считаться неправильно. Запиши случайный выбор в переменную, а потом выведи её на экран и её же запишешь в свой массив.
Александр правильно всё сказал:
puts rand(6) + 1
array = rand(6) + 1
Вот в этот момент случайное число будет сгенерировано дважды:
array
Например, выведется 4, а запишется в array
2.
Если хотите зафиксировать это число, его надо сгенерировать 1 раз, записать в переменную и использовать её:
random_number = rand(6) + 1
puts random_number
sum += random_number