Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Help_LR.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
333 Кб
Скачать
☆

Клас Random.

Клас Random - ще один корисний клас, орієнтований на роботу з числами.

Його призначення - генерація послідовності псевдовипадкових цілих або речових

чисел, рівномірно розподілених в деякому діапазоні. Такі послідовності чисел бувають

необхідні при тестових випробуваннях і в деяких методах оптимізації.

Клас використовує деяке початкове число як базове значення, застосовує до нього алгоритм

перемішування розрядів і отримане таким чином число повертає як чергове випадкове число,

при цьому воно одночасно стає базовим для вироблення наступного випадкового числа.

Таким чином, насправді виробляється послідовність псевдовипадкових чисел, оскільки кожне

чергове число повністю визначається початковим значенням і алгоритмом перемішування.

Проте властивості цієї послідовності цілком достатні для більшості практичних застосувань.

Клас має два конструктори: замовчуваний без параметрів і переобтяжений з параметром int.

Перший як початкове значення приймає поточну дату і час, другий - параметр звернення.

Таким чином, перший конструктор створює серії чисел, що не повторюються, а інший може

створювати однакові серії.

Методи класу не є статичними, тому для їх використання обов'язково створюється об'єкт класу.

Ці методи перераховані в таблиці.

Метод

Опис

public virtual int Next () ;

Повертає чергове псевдовипадкове число. У переобтяжених варіантах методу можна указувати максимальне значення чисел, що генеруються, або діапазон їх значень

public virtual void

NextBytes (byte[] buffer);

Заполняет змінну buffer байтами з псевдо випадковими значенням

public virtual double

NextDouble () ;

Повертає дійсне псевдовипадкове число в діапазоні від 0,0 до 1,0

Функції користувача об'являються й описуються у файлі програми, а також

у модулях користувача й в окремих файлах, що підключаються до програми.

Для використання в програмі функцій користувача їх прототипі необхідно описати

до початку основної функції .

Синтаксис оголошення:

<Тип повертаємого результату> < Ім'я функції >(< Параметри функції

і їхній тип >)

{

< Оператори функції (тіло функції) >

return <результат>;

}

Приклад функції користувача:

double Power(double x, double a)

{

if (x>0 ) return exp(a*log(x));

else return -1;

}

Дана функція підносить х до степеня а для будь-яких позитивних х.

Можуть бути використані рекурсівни функції,у яких для одержання

чергового значення використовується попереднє значення цієї ж функції.

Прикладом таких функцій є функція обчислення факториалу:

long int Fact(int N)

{

long int Fct = 1;

if (N>1) Fct = N*Fact(N-1);

return Fct;

}

Приклад використання функції користувача в програмі:

float a,x,y;

long int c;

.......................................

x = 1.234;

a = 0.333;

y = Power(x,a);

c = Fact(4);

........................................

Для повернення результату у функціях можна використовувати посилання на параметри

за допомогою специфікаторів out і ref. Специфікатор ref використовується для параметрів

посилального типу (масиви, рядки, структури).

Приклад:

double MinMaxMidle(double V1, double V1, out double min, out double max)

{

if(V1 < V2) min = V1; else min = V2;

if(V1 > V2) max = V1; else max = V2;

return (V1 + V2) / 2;

}

Функції можуть бути перенавантажуваними, тобто мати одне ім'я, але відрізнятися

типом вхідних даних, їх кількістю або типом результату. Довільна кількість вхідних

даних можна задавати у вигляді масиву із специфікатором params.

Приклади:

private int func(int k) // функція з одним параметром

{

return 3 * k;

}

private int func(int k1, int k2) // функція з двома параметромі

{

return k1 + k2;

}

private int func(double k) // функція з параметром іншого типу

{

return (int) (3 * k);

}

private int Sum(params int[] arr) // функція з довільним числом параметрів

{

int s = 0;

foreach (int v in arr) s += v;

return s;

}

Використання в програмі:

int v = 3,v1 = 5;

double x = 2.5;

Console.WriteLine("V = "+v.ToString()+" F = "+func(v).ToString());

Console.WriteLine("X = " + x.ToString() + " F = " + func(x).ToString());

Console.WriteLine( func(v,v1).ToString());

Console.WriteLine(Sum(1, 2, 3).ToString() + " " + Sum(1, 2, 3, 4).ToString());

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]