Описание функции RAND в Excel 2007 и в Excel 2003

Переводы статьи Переводы статьи
Код статьи: 828795 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В статье описан модифицированный алгоритм, используемый в функции датчика случайных чисел RAND в Microsoft Office Excel 2007 и в Microsoft Office Excel 2003.

Дополнительная информация

Функция RAND предыдущих версий Excel использовала алгоритм генерации псведослучайных чисел, качество которого по результатам стандартных тестов случайности было недостаточным. Хотя это, по-видимому, затрагивает только тех пользователей, которым приходится делать много вызовов функции RAND (миллион и более вызовов) и не должно быть пролемой для почти каждого пользователя, алгоритм генерации псевдослучайных чисел, описанный здесь, впервые был реализован в Excel 2003. Он проходит тот же набор стандартных тестов.

Набор тестов называется Diehard (см. примечание 1). Реализованный в Excel 2003 алгоритм был разработан учеными Б.А. Вичманом (B.A. Wichman) и и И.Д. Хиллом (I.D. Hill) (см. примечания 2 и 3). Этот генератор случайных чисел также используется в пакете программ RAT-STATS, распространяемом управлением генерального инспектора Министерства здравоохранения и социального обеспечения США. Как показано Роцем с сотрудниками (см . примечание 4), он проходит тесты DIEHARD и дополнительные тесты, разработанные в Национальном институте стандартов и технологий (NUST, бывшее Национальное бюро стандартов).

Примечания

  • Тесты были разработаны профессором Джорджем Марсалья (George Marsaglia) с кафедры статистики университета штата Флорида и доступны на следующем веб-узле:
    http://www.csis.hku.hk/~diehard
  • Wichman, B.A. and I.D. Hill, Algorithm AS 183: An Efficient and Portable Pseudo-Random Number Generator, Applied Statistics, 31, 188-190, 1982.
  • Wichman, B.A. and I.D. Hill, Building a Random-Number Generator, BYTE, pp. 127-128, March 1987.
  • Rotz, W. and E. Falk, D. Wood, and J. Mulrow, A Comparison of Random Number Generators Used in Business, presented at Joint Statistical Meetings, Atlanta, GA, 2001.
Основная идея алгоритма состоит в следующем: если взять три случайных числа от 0 до 1 и сложить их, то дробная часть суммы сама по себе будет являться случайным числом от 0 до 1. Основные операторы в листинге программы на Фортране, взятые из оригинальной статьи Вичмана и Хилла, таковы:
C	IX, IY, IZ SHOULD BE SET TO INTEGER VALUES BETWEEN 1 AND 30000 BEFORE FIRST ENTRY

IX = MOD(171 * IX, 30269)

IY = MOD(172 * IY, 30307)

IZ = MOD(170 * IZ, 30323)

RANDOM = AMOD(FLOAT(IX) / 30269.0 + FLOAT(IY) / 30307.0 + FLOAT(IZ) / 30323.0, 1.0)
Таким образом, функции IX, IY, IZ генерируют целые числа в диапазоне от 0 до 30268, от 0 до30306 и от 0 до 30322 соответственно. Эти числа комбинируются в последнем операторе, реализуя простой принцип, высказанный ранее: если взять три случайных числа от 0 до 1 и сложить их, то дробная часть суммы сама по себе будет являться случайным числом от 0 до 1.

Если достаточно длинная последовательность случайных чисел с какого-то момента повторяется, то такая последовательность будет псевдослучайной. Именно поэтому функция RAND генерирует псевдослучайные числа. Комбинация случайных чистел по методу Вичмана-Хилла гарантирует, что такое повторение начнется не ранее, чем через 10 в 13 степени генерируемых чисел. Некоторые из тестов Diehard выдавали неудовлетворительные результаты для предыдущих версий функции RAND, поскольку неповторяющаяся последовательность была недопустимо короткой.

Результаты в предыдущих версиях Excel

Функция RAND ранних версий Excel была расчитана на пользователей, которым не требовалась длинная последовательность случайных чисел (миллион и более). Она не прошла несколько стандартных тестов на случайность, что создавало проблему в случае, когда требовалась большая длина случайной последовательности.

Результаты в Excel 2003

Реализован простой и эффективный алгоритм. Новый генератор проходит все стандартные тесты на случайность.

Заключение

Опытным пользователям функции RAND, которым необходима длинная последовательность случайных чисел, более или менее хватает нового генератора из Excel 2003. Других пользователей не испугает и функция RAND предыдущих версий Excel.

Ссылки

Для получения дополнительных сведений о документированной пролеме, имевшейся в RAND, щелкните следующий номер статьи базы знаний Майкрософт:
834520 The RAND function returns negative numbers in Excel 2003 (Функция RAND в Excel 2003 возвращает отрицательные числа) (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 828795 - Последний отзыв: 29 декабря 2007 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
Ключевые слова: 
kbinfo kbfunctions kbfuncstat KB828795

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com