Ответ 1
Существует простой (хотя и не очень интересный) способ сделать это:
rand(2) == 1
Мне нужно индексировать хэш, который я определил в терминах "true" и "false"
colorHash = Hash.new { |hash, key| hash[key] = {} }
colorHash["answers"][true] = "#00CC00"
colorHash["answers"][false] = "#FFFFFF"
В целях тестирования я индексирую rand (2), и это терпит неудачу. Если я индексирую true, он работает.
Я искал что-то вроде
Rand (2).logical
но ничего не найти.
Существует простой (хотя и не очень интересный) способ сделать это:
rand(2) == 1
Как насчет чего-то подобного?
[true,false][rand(2)]
То есть, возвратите случайный результат из массива true/false. Это, конечно, более многословно, чем rand(2) == 1
.
Я думаю, что это один из самых крутых способов, а #sample - один из менее известных методов Array:
[true, false].sample
Изменить: это допустимо только в Ruby >= 1.9
[true,false].shuffle
или [true,false].sort { rand }
def get_bool
[true,false].shuffle.shift
end