Лекция 9. Класс Random. Функции в языке с#
При отладке программ, использующих массивы, удобно иметь возможность генерировать исходные данные, заданные случайным образом. В библиотеке C# класс Random используется для таких целей.
Для получения псевдослучайной последовательности чисел необходимо сначала создать экземпляр класса с помощью конструктора, например:
Random a = new Random(); // 1
Random b = new Random(1); //2
Есть два вида конструктора: конструктор без параметров (оператор 1), который использует начальное значение генератора, вычисленное на основе текущего времени. В этом случае каждый раз создается уникальная последовательность. Конструктор с параметром типа int (оператор 2) задает начальное значение генератора, что обеспечивает возможность получения одинаковых последовательностей чисел.
Для получения очередного значения серии пользуются методами, перечисленными в таблице 9.1.
Таблица 9.1 - Основные методы класса System.Random
Название |
Описание |
Next () |
Возвращает целое положительное число во всем положительном диапазоне типа int |
Next(мaкс)
|
Возвращает целое положительное число в диапазоне [0, макс] |
Next (мин, макс)
|
Возвращает целое положительное число в диапазоне [мин, макс] |
NextBytes(массив)
|
Возвращает массив чисел в диапазоне [0, 255] |
NextDoublе()
|
Возвращает вещественное положительное число в диапазоне [0, 1) |
Пример работы с генератором псевдослучайных чисел
using System:
namespace ConsoleApplicationl
{ class Classl
{ static void Main()
{
Random a = new Random();
Random b = new Random(1);
const int n = 10;
Console.WriteLine( "\n Диапазон [0, 1]:" );
for ( int i = 0; i < n; ++i )
Console.Write( "{0 ,6:0.##}", a.NextDouble() );
Console.WriteLine( "\n Диапазон [0, 1000]:" );
for ( int i = 0; i < n; ++i )
Console.Write( " " + b.Next(1000) );
Console.WriteLine( "\n Диапазон [-10, 10]:" );
for ( int i = 0; i < n; ++i )
Console.Write( " " + a.Next(-10, 10) );
Console.WriteLine( "\n Массив [0, 255]:" );
byte[] mas = new byte[n];
a.NextBytes( mas );
for (int i = 0; i < n; ++i) Console.Write( " " + mas[i] );
} } }
Функции (методы) в языке с#
Функции в языке С# чаще всего рассматриваются в качестве методов класса. Метод - это элемент (член) класса, который реализует любые действия, выполняемые классом. Методы определяют поведение класса.
Метод (функция) – это законченный фрагмент кода, к которому можно обратиться по имени. Он описывается один раз, а вызываться столько, сколько это необходимо. Один и тот же метод может обрабатывать различные данные, переданные ему в качестве аргументов.
Синтаксис заголовка метода:
[спецификаторы] тип возвращаемого значения имя_метода ([параметры])
В качестве спецификаторов могут выступать спецификаторы void, virtual, extern, public,static и множество других, рассмотренных в следующих лекциях.
Тело метода задает последовательность действий (последовательность операторов), выполняемых методом. Тип возвращаемого значения определяет – значение какого типа будет вычислено с помощью данного метода.
После выполнения метода происходит возврат в точку вызова метода, передача туда значения, записанного в операторе return. Если метод не возвращает никакого значения, в его заголовке задается тип void, а оператор return отсутствует.
Параметры метода представляют собой локальные переменные, которые при вызове метода принимают значение соответствующего аргумента. Область действия параметра – весь метод.
Пример простейшего метода
public double Func1(int x,double y) //заголовок метода
{ //тело метода
double z=x*y;
return z;
} //конец тела метода
/*public –спецификатор
double – тип возвращаемого значения
Func1 - имя метода
int x,double y – параметры метода.
В точку вызова данного метода будет передано вещественное произведение двух чисел.*/
Метод, не возвращающий значение – вызывается как отдельный оператор.
Метод, возвращающий значение - вызывается в правой части оператора присваивания.
Параметры, описываемые в заголовке метода, определяют множество значений аргументов, которые можно передавать в метод. Список аргументов при вызове метода должен соответствовать списку параметров по количеству, порядку следования и типу. Для каждого параметра должны задаваться его тип и имя.