Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9. Класс Random. Функции.doc
Скачиваний:
3
Добавлен:
02.05.2019
Размер:
78.34 Кб
Скачать

Лекция 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 – параметры метода.

В точку вызова данного метода будет передано вещественное произведение двух чисел.*/

Метод, не возвращающий значение – вызывается как отдельный оператор.

Метод, возвращающий значение - вызывается в правой части оператора присваивания.

Параметры, описываемые в заголовке метода, определяют множество значений аргументов, которые можно передавать в метод. Список аргументов при вызове метода должен соответствовать списку параметров по количеству, порядку следования и типу. Для каждого параметра должны задаваться его тип и имя.