28539

Получение случайных чисел

Доклад

Информатика, кибернетика и программирование

Последовательности случайных чисел найденные алгоритмически на самом деле не являются случайными т. Однако при решении практических задач программно получаемую последовательность часто все же можно рассматривать как случайную при условии что объем выборки случайных чисел не слишком велик. В связи с этим для случайных чисел найденных программным путем часто применяют название псевдослучайные числа.

Русский

2013-08-20

45 KB

26 чел.

Получение случайных чисел

Последовательность случайных чисел можно получить одним из следующих способов:

- путем выборки из специальных таблиц

- используя датчики случайных чисел

- программными методами.

Именно последний способ и нашел наибольшее распространение  при решении различных задач методами случайного поиска с  использованием средств вычислительной техники, поскольку  первый способ затруднительно использовать при необходимости работы с  большим массивом значений, а при втором могут  возникать сложности   сочленения самого датчика с ЭВМ.

Последовательности случайных чисел, найденные алгоритмически,  на самом деле не являются случайными, т.к. не удовлетворяют  необходимым статистическим оценкам. Однако при решении практических  задач программно получаемую последовательность  часто все же можно рассматривать как случайную при условии,  что объем выборки случайных чисел не слишком велик. В связи с этим, для случайных чисел, найденных  программным путем, часто применяют название псевдослучайные числа. Обычно для  программных способов получения случайных чисел используется рекуррентное соотношение, с помощью которого каждое последующее число образуется из предыдущего в соответствии с правилом,  задаваемым в виде набор арифметических и логических операция,  выполняемых ЭВМ. Основной недостаток этих методов заключается  в том, что получаемая последовательность случайных чисел является  периодической. Однако при решении практических задач ее период  часто оказывается достаточным, чтобы это существенно не сказалось  на результатах вычислений. Вместе с тем, программные способы  получения случайных чисел обладают тем достоинством по сравнению  с использованием специальных датчиков, что позволяют при необходимости  воспроизвести решение задачи что особенно важно при больших  объемах затрат машинного времени в случае сбоев в работе ЭВМ.  Рассмотрим некоторые алгоритмы получения последовательности случайных чисел, которые можно использовать при решении оптимизационных задач методами случайного поиска.

                             Метод произведений  

Произвольно выбираются два числа b0 и b1 , имеющие одинаковое число  значащих цифр m. Находится их произведение q2 =b0 b1 . Если m > 1, то  число значащих цифр в q2 будет больше, чем m. Тогда из всех значащих цифр  произведения q2 выбирается m цифр, расположенных в середине числа q2, и эти цифры используют как случайное число b2. Следующее случайное  число b3 получается аналогично из произведения b1 b2 и т.д.

Недостатком этого метода является возможность вырождения последователь- ности находимых случайных чисел, т.е. возможность получения на некотором  этапе случайного числа, равного 0, после чего все остальные числа, определяемые с помощью данного метода, оказываются равными 0.                                           Метод вычетов

Применение метода вычетов основано на том, что каждое последующее

случайное число bk+1 образуется из предыдущего bk согласно рекуррентному  соотношению:

 bk+1 =l*bk(modN)   (1)  

которое означает, что число b равно остатку от деления на N произведения

числа b на постоянный множитель l. Очевидно, что остаток от деления на

 N в общем случае имеет туже разрядность, что и число N, т.е. выбором числа  N по существу определяется разрядность получаемых случайных чисел.

С использованием этого алгоритма была, например, найдена следующая  зависимость для получения последовательности псевдослучайных чисел b ,  равномерно расположенных на интервале [0;1]:  

dk+1 =517*d (mod 242 ); d0 = 1;   (2)  

 

bk =2-42 *dk   (3)  

Уравнение (2) является записью алгоритма (1), а (3) применяется для того,

чтобы привести случайные числа к интервалу [0; 1]. Период последовательности, получаемый по (2) примерно равен 1210 .Другая последовательность

псевдослучайных чисел может быть получена при использовании рекуррентного

соотношения (1), если принять  l=513;    n=236   (4)  

Получаемая при этих значениях последовательность имеет период,  оцениваемый  числом 22.1010 .

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

Получение псевдослучайных последовательностей из иррациональных   чисел.  Этот способ основан на свойстве иррациональных чисел образовывать  неупорядоченную последовательность цифр дробной части при вычислении  иррационального числа с достаточно высокой степенью точности.  В наиболее простой форме данный способ реализуется при расчете дробной  части произведения иррационального числа Z на последовательность  натуральных чисел. При этом алгоритм может быть записан в следующем  виде: bk= {K*Z}   K=1; 2; 3...   (5)  

Фигурные скобки в (5) означают, что из произведения K*Z берется только дробная часть, которая должна вычисляться с необходимой степенью  точности, характеризующей разрядность находимых псевдослучайных  чисел. Необходимо также отметить, что использование последовательностей  псевдослучайных чисел, отличающихся по вероятностным оценкам от  идеальной последовательности равномерно расположенных случайных  чисел, в некоторых случаях может заметно увеличить время решения  оптимизационной задачи методами случайного поиска.

                       Генерирование псевдослучайных чисел

Вообще говоря, получение случайных чисел при помощи компьютеров,  (как и всех детерминированных устройств) невозможно. ВСЕ программные  генераторы случайных чисел являются на самом деле генераторами  псевдослучайной последовательности.

Более того, псевдослучайные генераторы имеют ограниченный период повторения, то есть когда-нибудь они перебирают весь цикл, и все начинается  с  начала. Наиболее известными генераторами псевдослучайных чисел  являются конгруэнтные генераторы.

Одной из задач при использовании конгруэнтных генераторов является  подбор чисел-параметров генератора.  "Из простейших процедур, имитирующих случайные числа, наиболее  употребляемым так называемый конгруэнтный способ, приписываемый  Д.Х.Ламеру (Вообще-то он D.H.Lehmer):

    G(n+1)=K*G(n) + C MOD M

В нем каждое псевдослучайное число G(n+1) получается из предыдущего

 G(n1) умножением его на K, сложением с C и взятием остатка от деления

на M. Весь фокус здесь в том, чтобы подобрать хорошие значения K,C и

 M, на что были потрачены десятилетия работы математиков. Подбор почти

иррациональных K ничего не дает. Разумнее вычисления вести в целых

числах. Для них было установлено, что при C=0 и M=2^n наибольший

период M/4 достигается при K=3+8*i или K=5+8*i и нечетном начальном

числе. При достаточно больших K ряд производит впечатление случайного.

Результат можно улучшить если C нечетно и K=1+4*i, то период ряда равен  M. После долгих поисков K исследователи остановились на  значениях  69069 и 71365. Кроме значений M=2^N широко используются выборы  простых M, например, простого числа M=2^31 -1, известного со времен  Эйлера." Hаиболее  эффективным из псевдослучайных генераторов  является циклический генератор с обратной связью. Описан в книге  "Хоровиц, Хилл - Искусство схемотехники". Если период повторения  псевдослучайного генератора слишком мал, используют XOR нескольких  генераторов с взаимно простыми периодами. Период такого агрегированного  генератора есть произведение периодов элементарных генераторов.

Через несколько лет этот генератор отвергли, т.к. было обнаружено  (экспериментально), что если каждую тройку последовательно сгенерированных  подпрограммой чисел рассматривать как координаты числа в трехмерном  пространстве, то все такие точки окажутся на пятнадцати параллельных  плоскостях! Может ли кто-нибудь доказать (или опровергнуть) это утверждение?

Аппаратные генераторы

Hастоящие же генераторы истинно случайных последовательностей делают  в виде аппаратного устройства (или компьютерной карты).  Самым лучшим таким генератором является счетчик Гейгера + какой-нибудь  слаборадиоактивный изотоп. В таком генераторе меряется время между "щелчками"  моментами, когда генератор поймал частицу. Такой генератор дает очень хорошее  нормальное распределение, и обладает высокой производительностью. Применяется  в крипто-штучках, где гарантировано необходима истинно случайная уникальная  последовательность.

Для "бытового" применения хороши генераторы, оцифровывающие шум обычного  стабилитрона. То есть имеется компаратор, на одном из входов которого висит  стабилитрон, подпертый резистором, а на другом RC-фильтр, подключенный к  тому же стабилитрону. Такой генератор чуть похуже предыдущего по статистике,  зато не требует всякой


 

А также другие работы, которые могут Вас заинтересовать

67987. Иван Михайлович Комов 201.5 KB
  В своем очерке посвященном общественно-историческим условиям в России во второй половине XVIII века считаю нужным указать наиболее важные для исторические черты с точки зрения развития и влияния на формирование Комова И. Иван Михайлович Комов Комов Иван Михайлович 1750-1324.
67988. Иван Владимирович Тюрин 132.5 KB
  Официальная биография говорит, что Иван Владимирович Тюрин родился 3 ноября 1892 году в селе Верхние Юшады Мензелинского района Уфимской области. Однако по воспоминаниям М. Оберландер, дочери И.В. Тюрина, в этом селе его крестили, а родился Иван Владимирович в доме своих родителей, Владимира Ивановича и Анастасии Васильевны...
67989. Определение концентрации Ge в эпитаксиальных пленках SixGe1-x/Si методом Оже-спектроскопии 749 KB
  Данное пособие подготовлено в рамках работ по проекту «Научно-образовательный центр Физика твердотельных наноструктур Нижегородского государственного университета им. Н.И.Лобачевского» Российско-американской программы «Фундаментальные исследования и высшее образование».
67990. Розвиток освіти в Іспанії 164.5 KB
  Перші школи в Іспанії як і в ін. школи для бідних а також ряд шкіл і колегіумів при інститутах створених педагогамигуманістами. Працюючим були доступні лише початкові школи але їх не вистачало. Незважаючи на те відповідно до конституції 1931 і закону 1933 школи релігійних організацій...
67991. Навчання в Росії в 11-14 століттях 116.5 KB
  Історичні зведення про російські школи убогі. Аж до XVІІ століття, коли святитель Дмитрій Ростовський влаштував перші народні школи. Істотно те, що характер народної освіти в Руській державі споконвічно складається як церковний і сімейний. Церковним було мистецтво, зачинателем якого став...
67992. Освітня справа доби гетьманату (квітень — грудень 1918 року) 138 KB
  Щоб зрозуміти погляд П. Скоропадського на державу, треба пояснити, у якому середовищі формувався світогляд гетьмана і в якому контексті доводилося йому діяти. Насамперед він був глибоко пов’язаний з історичною традицією. П. Скоропадський належав до старого козацького роду, серед якого був...
67993. Історичні умови, освіта і наука в період українського культурного відродження ХIХ століття 60.5 KB
  У кінці XVIII ст. територія України була розділена між Австрійською (увійшло 20% площі) і Російською (80%) імперіями. До цього часу завершилася ліквідація української державності. В обох імперіях розгалужений бюрократичний апарат повністю контролював всі сторони життя суспільства.