Если ваше конечное время и время начала не находятся в пределах секунды от eachother, вы можете отбрасывать свои отметки времени как даты и выполнять арифметику даты:
select avg(cast(endtime as date)-cast(starttime as date))*24*60*60
from timings;
Используйте rand(range)
От [1 119] Случайные числа Ruby :
<час>, Если бы Вам было нужно случайное целое число для моделирования списка шестистороннего, умирают, Вы использовали бы:
1 + rand(6)
. Список в костях мог быть моделирован с2 + rand(6) + rand(6)
.Наконец, если Вам просто нужно случайное плавание, просто вызов
rand
без аргументов.
Как [1 120] Marc-AndrГ© Lafortune упоминает в [1 121] его ответ ниже (пойдите upvote это) , Ruby 1.9.2 имеет свое собственное Random
класс (который сам Marc-AndrГ© помог отладить , следовательно 1.9.2 целей для той функции).
, Например, в этом игра, где необходимо предположить 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
) обычно не была бы хорошая идея, как объяснено подробно (снова) [1 126] Marc-AndrГ© Lafortune , в [1 127] его ответ (снова).
, Но если Вы не используете Random.new
, тогда , метод класса rand
только берет max
значение, не Range
, как [1 129], перила (энергично) указывают в комментарии (и, как зарегистрировано в эти документы для [1 112] ). Только метод экземпляра может взять Range
, как проиллюстрировано [1 132] генерируют случайное число с 7 цифрами .
, Поэтому эквивалент [1 114] был бы 20 + Random.rand(11)
, с тех пор Random.rand(int)
возвраты “a случайное целое число, больше, чем или равен нулю и меньше, чем аргумент .” 20..30
включает 30, я должен придумать случайное число между 0 и 11, исключая 11.
Не забывайте отбирать RNG с srand () сначала.
Ну, я понял его. По-видимому, существует встроенная (?) функция, вызванная рэнд:
rand(n + 1)
, Если кто-то отвечает более подробным ответом, я отмечу это как корректный ответ.
На рубиновом языке у нас есть метод как rand()
. Можно генерировать случайное число с помощью этого метода. rand()
метод будет иметь только целочисленный аргумент или диапазон. Тип возврата этого метода является случайным целым числом.
rand() # This Will generates a random number between 0.0 to 1.0
rand(10) # This Will generates a number between 0 to 10
rand(1 .. 9) # This Will generates a number between 1 to 10
rand(1 ... 10) # This Will generates a number between 2 to 9
ПРИМЕЧАНИЕ: числа, произведенные
rand()
, достаточно для простые приложения., Но если Вам нужен он в целях безопасности, как генерация одноразового пароля, создавая маркеры сброса пароля, тогда необходимо использовать одну из части библиотеки стандарта Ruby, которая является
SecureRandom
.
require 'securerandom'
SecureRandom.random_number
=> 0.232
SecureRandom.random_number(100)
=> 72
SecureRandom.hex
=> "87694e9e5231aba6ssdfs3de39c58cdfbe307"
hated
ручное удаление функции.
– Alexander Pogrebnyak
1 July 2013 в 16:09
Хотя вы можете используйте rand (42-10) + 10
, чтобы получить случайное число между 10
и 42
(где 10 включает и 42 исключая), есть лучший способ начиная с Ruby 1.9.3, где вы можете вызвать:
rand(10...42) # => 13
Доступно для всех версий Ruby, требуя мой гем backports
.
Ruby 1.9.2 также представил класс Random
, так что вы можете создавать свои собственные объекты генератора случайных чисел и имеет хороший API:
r = Random.new
r.rand(10...42) # => 22
r.bytes(3) # => "rnd"
Сам класс Random
действует как генератор случайных чисел, поэтому вы вызываете напрямую:
Random.rand(10...42) # => same as rand(10...42)
Примечания к Random.new
В большинстве случаев самым простым является использование rand
или Random.rand
. Создание нового генератора случайных чисел каждый раз, когда вы хотите получить случайное число, - это действительно плохая идея . Если вы сделаете это, вы получите случайные свойства алгоритма начального заполнения, которые ужасны по сравнению со свойствами самого генератора случайных чисел .
Если вы используете Random.new
, вы должны как можно реже называть его , например, один раз как MyApp :: Random = Random.new
и используйте его везде.
Случаи, когда Random.new
полезны, следующие:
rand
/ Random. И
, что основные программы могут полагаться на Случайные
объекты можно упорядочить)