Используйте rand(range)
Из Случайные числа Ruby :
Если вам понадобилось случайное целое число имитируйте рулон шестисторонней матрицы, вы будете использовать:
1 + rand(6)
.Наконец, если вам просто нужен случайный поплавок, просто вызовите
blockquote>rand
без аргументов.Как Марк-Андре Лафортун упоминает в свой ответ ниже (идите вверх) , Ruby 1.9.2 имеет свой
Random
класс (что сам Марк-Андре помог отладить , следовательно, 1.9.2 target для этой функции).Например, в этом Если вам нужно угадать 10 чисел , вы можете их инициализировать с помощью:
10.times.map{ 20 + Random.rand(11) } #=> [26, 26, 22, 20, 30, 26, 23, 23, 25, 22]
Примечание:
- Используя
Random.new.rand(20..30)
(используяRandom.new
), как правило, не было бы хорошей идеей, как подробно объяснялось Marc-André Lafortune , в его ответе (снова).- Но если вы не используете
Random.new
, то метод классаrand
принимает значениеmax
, а неRange
, как перила (энергетически ) указывает в комментарии (и как описано в документах дляRandom
). Только метод экземпляра может приниматьRange
, как показано в , генерировать случайное число с 7 цифрами .Вот почему эквивалент
Random.new.rand(20..30)
будет20 + Random.rand(11)
, так какRandom.rand(int)
возвращает «случайное целое число, большее или равное нулю, а меньше аргумента .»20..30
включает 30, мне нужно придумайте случайное число от 0 до 11, исключая 11.
Это - второй случай - связан с не очень известным параметром «hive.fetch.task.conversion» .
В зависимости от того, как установлено, Hive может запустить одну «задачу извлечения» вместо задания «Уменьшить карту» даже с фильтром, т.е. предложением where.
Если вы выберете * или неразмеченный столбец, он запустит задачу извлечения вместо MR-job - одиночный поток. Отдельная тема не всегда хорошая вещь. Счетчик (*) должен говорить сам за себя, потенциально вам нужно много обработать, второй случай можно рассматривать как курсор.
Вы можете изменить параметр на «минимальный» или «нет» в hive-site.xml, чтобы устранить этот тип обработки.
Хорошо заметили.