Запуск Ruby как index.cgi, [1,3,5] .shuffle всегда дает один и тот же результат - PullRequest
0 голосов
/ 27 июня 2010

Я сбрасываю значение RUBY_VERSION => 1.8.7

каждый раз, значение [1,3,5] .shuffle также равно [1,3,5], я должен добавитьsrand (Time.now.to_i) или srand () перед ним, чтобы сделать его случайным ... Я думал, что srand вызывается автоматически?но, возможно, не в среде .cgi?

, если я использую irb, посмотрю на [1,3,5] .shuffle, выйду и снова введу irb, каждый раз, когда результаты будут разными.

кстати, ri shuffle ничего не дали, а в массиве и перечислимых документах не было списка случайных чисел!либо ...?

1 Ответ

0 голосов
/ 27 июня 2010

Поскольку я не вижу, как вы проверяли, изменилось ли оно или нет, я не могу сказать наверняка, но я ожидаю, что проблема связана с тем, как вы проверяете, изменилось ли оно или нет. Если вы используете shuffle, это не меняет исходный массив. Таким образом, если вы проверите значение исходного массива, а не возвращенного результата, то окажется, что метод каждый раз возвращает одно и то же значение

RUBY_VERSION    # => "1.8.7"

a = [1,3,5]

# a does not change, because shuffle does not mutate
a.shuffle       # => [5, 1, 3]
a               # => [1, 3, 5]

# now a does change, because shuffle! does mutate
a.shuffle!  # => [5, 3, 1]
a           # => [5, 3, 1]

Также, вот документы http://ruby -doc.org / core-1.8.7 / classes / Array.html # M000335

...