
- •Введение
- •Переменные и константы
- •Типы данных
- •Числовые функции
- •Класс Random
- •Линейные алгоритмы
- •Условные операторы
- •Оператор if...Else
- •Оператор выбора switch
- •Оператор цикла с параметром
- •Сумма конечного ряда
- •Обработка данных во время ввода
- •Циклы с постусловием и предусловием
- •Дополнительные задачи
- •Массивы
- •Одномерные массивы Пример
- •Инициализация массива
- •Обработка элементов массива
- •Задания на определение суммы и количества элементов одномерного массива, соответствующих определенному условию
- •Задания на нахождение максимального и минимального элемента в одномерном числовом массиве
- •Работа с двумя массивами
- •Условный оператор после обработки массива
- •Самостоятельные задания по теме «Одномерные массивы»
- •Двумерные массивы Простейшие задачи
- •Сравнение (анализ) элементов
- •Расчётные задачи
- •Простейшие задачи
- •Поиск в текстовом файле
- •Работа с несколькими файлами
- •Текстовые файлы
- •Функции и процедуры
- •Библиографический список
Класс Random
Умение генерировать случайные числа требуется во многих приложениях. Класс Random содержит все необходимые для этого средства. Класс Random имеет конструктор класса: для того, чтобы вызывать методы класса, необходимо сначала создавать экземпляр (объект) класса. Созданный объект обеспечивает получение чисел.
Класс Random является наследником класса Object, а, следовательно, имеет в своём составе и методы родителя. Рассмотрим часть оригинальных методов класса Random, используемых для генерирования последовательностей случайных чисел.
Начнём рассмотрение с конструктора класса. Конструктор обеспечивает создание объектов класса. Он имеет две реализации. Одна из них позволяет генерировать неповторяющиеся при каждом запуске серии случайных чисел. Начальный элемент такой серии строится на основе текущей даты и времени, что гарантирует уникальность серии. Этот конструктор вызывается без параметров. Он описан как Random(). Другой конструктор с параметром целого типа – Random(int) обеспечивает важную возможность генерирования повторяющейся серии случайных чисел. Параметр конструктора используется для построения начального элемента серии, поэтому при задании одного и того же значения параметра серия будет повторяться.
Перегруженный метод Next() при каждом вызове возвращает положительное целое, равномерно распределённое в некотором диапазоне. Диапазон задаётся параметрами метода. Три реализации метода отличаются набором параметров:
Next () – метод без параметров выдаёт целые положительные числа во всём положительном диапазоне типа int;
Next (max) – выдаёт целые положительные числа в диапазоне [0, max];
Next (min, max) – выдаёт целые положительные числа в диапазоне [min, max].
Метод NextDouble() имеет одну реализацию. При каждом вызове этого метода выдаётся новое случайное число, равномерно распределённое в интервале [0, 1].
Ещё один полезный метод класса Random позволяет при одном обращении получать целую серию случайных чисел. Метод имеет параметр – массив, который и будет заполнен случайными числами. Метод описан как NextBytes(buffer). Так как параметр buffer представляет массив байтов, то, естественно, генерированные случайные числа находятся в диапазоне [0, 255].
Рассмотрим пример работы со случайными числами:
static void Main(string[] args)
{
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++)
{
Console.WriteLine("Число " + i + "=" + realRnd.NextDouble());
}
//Случайные числа в диапазоне [min, max]
int min = -100, max = -10;
Console.WriteLine("случайные числа в диапазоне [" + min +"," + max + "]");
for(int i = 1; i <= 5; i++)
{
Console.WriteLine("Число " + i + "=" + realRnd.Next(min, max));
}
//Случайный массив байтов
byte[] bar = new byte[10];
repeatRnd.NextBytes(bar);
Console.WriteLine("Массив случайных чисел в диапазоне [0, 255]");
for(int i = 0; i < 10; i++)
{
Console.WriteLine("Число " + i + "= " +bar[i]);
}
}
Сначала создаются два объекта класса Random. У этих объектов разные конструкторы. Объект с именем realRnd позволяет генерировать неповторяющиеся серии случайных чисел. Объект repeatRnd даёт возможность повторить при необходимости серию. Метод NextDouble создаёт серию случайных чисел в диапазоне [0, 1]. Вызываемый в цикле метод Next с двумя параметрами создаёт серию случайных отрицательных целых, равномерно распределённых в диапазоне [-100, -10]. Метод NextBytes объекта repeatRnd позволяет получить при одном вызове массив случайных чисел из диапазона [0, 255].