Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка ПрИн академия 2013.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.56 Mб
Скачать

2. 6. Класс Random и его функции

Во многих приложениях требуется умение генерировать случайные числа. Все необходимые для этого средства содержит класс Random. Класс Random имеет конструктор класса: для того, чтобы вызывать методы класса, нужно вначале создать экземпляр класса.

Рассмотрим методы класса Random со статусом public, необходимые для генерирования последовательностей случайных чисел.

Начнем рассмотрение с конструктора класса. Он перегружен и имеет две реализации. Одна из них позволяет генерировать неповторяющиеся при каждом запуске серии случайных чисел. Начальный элемент такой серии строится на основе текущей даты и времени, что гарантирует уникальность серии. Этот конструктор вызывается без параметров. Он описан как public Random(). Другой конструктор с параметром - public Random(int) обеспечивает важную возможность генерирования повторяющейся серии случайных чисел. Параметр конструктора используется для построения начального элемента серии, поэтому при задании одного и того же значения параметра серия будет повторяться.

Перегруженный метод public int Next() при каждом вызове возвращает положительное целое, равномерно распределенное в некотором диапазоне. Диапазон задается параметрами метода. Три реализации метода отличаются набором параметров:

- public int Next() - метод без параметров выдает целые положительные числа во всем положительном диапазоне типа int;

- public int Next(int max) - выдает целые положительные числа в диапазоне [0,max];

- public int Next(int min, int max) - выдает целые положительные числа в диапазоне [min,max].

Метод public double NextDouble() имеет одну реализацию. При каждом вызове этого метода выдается новое случайное число, равномерно распределенное в интервале [0-1).

Еще один полезный метод класса Random позволяет при одном обращении получать целую серию случайных чисел. Метод имеет параметр - массив, который и будет заполнен случайными числами. Метод описан как public void NextBytes (byte[ ] buffer). Так как параметр buffer представляет массив байтов, то, естественно, генерированные случайные числа находятся в диапазоне [0, 255].

Приведем теперь пример работы со случайными числами. Для проведения экспериментов по генерации случайных чисел создадим метод Rand в классе Testing. Вот программный код этого метода:

/// <summary>

/// Эксперименты с классом Random /// </summary> public void Rand() {           const int initRnd = 77;           Random realRnd = new Random();           Random repeatRnd = new Random(initRnd);           // случайные числа в диапазоне [0,1)           Console.WriteLine("случайные числа в диапазоне[0,1)");             for (int i = 1; i <= 5; i++) { //1                         Console.WriteLine (“Число " + i + "=" + realRnd.NextDouble());             }//for1             // случайные числа в диапазоне[min,max]             int min = -100, max = -10;             Console.WriteLine("случайные числа в диапазоне [" + min + "," + max + "]");             for (int i = 1; i <= 5; i++) { //2                         Console.WriteLine("Число " + i + "= " + realRnd.Next(min, max));             }//for2             // случайный массив байтов             byte[ ] bar = new byte[10];             repeatRnd.NextBytes(bar);             Console.WriteLine("Массив случайных чисел в диапазоне [0, 255]");             for (int i = 0; i < 10; i++) {//3                         Console.WriteLine("Число " + i + "= " + bar[i]);             }//for3

} //Rand

Результаты вывода можно увидеть на рисунке 1.14.

Рисунок 1.14 - Генерирование последовательностей случайных

чисел в процедуре Rand