Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Клас Random




 

При відлагодженні програм, що використовують масиви, зручно мати можливість генерувати початкові дані, задані випадковим чином. У бібліотеці С# на цей випадок є клас Random, визначений в просторі імен System.

Для отримання псевдовипадкової послідовності чисел необхідно спочатку створити екземпляр класу за допомогою конструктора, наприклад:

 

Random а = new Random(); // 1

Random b = new Random (1); // 2

 

Є два види конструктора: конструктор без параметрів (оператор 1) використовує початкове значення генератора, обчислене на основі поточного часу. В цьому випадку кожного разу створюється унікальна послідовність. Конструктор з параметром типу int (оператор 2) задає початкове значення генератора, що забезпечує можливість отримання однакових послідовностей чисел.

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

 

Таблиця 6.2

Основні методи класу System.Random

 

Назва Опис
Next () Повертає ціле додатне число у всьому додатному діапазоні типу int
Next (макс) Повертає ціле додатне число в діапазоні [0, макс]
Next (мин, макс) Повертає ціле додатне число в діапазоні [мін, макс]
NextBytes (массив) Повертає масив чисел в діапазоні [0, 255]
NextDouble () Повертає дійсне додатне число в діапазоні [0,1]

 

Приклад застосування методів приведений в лістингу 6.5.

Лістинг 6.5. Робота з генератором псевдовипадкових чисел

using System;

namespace ConsoleApplication1

{

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();

Console.WriteLine("Діапазон [0,1000]: \n");

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]);

Console.WriteLine();

Console.ReadLine();

}

}

}

 

Результат роботи програми:

Діапазон [0, 1]:

0,02 0,40 0,24 0,55 0,92 0,84 0,90 0,78 0,78 0,74

Діапазон [0, 1000]:

248 110 467 771 657 432 354 943 101 642

Діапазон [-10, 10]:

-8 9 -6 -10 7 4 9 -5 -2 -1

Масив [0, 255]:

181 105 60 50 70 77 9 28 133 150

 

Більш ускладнений приклад роботи з масивом приведений в лістингу 6.6 та 6.7.

Лістинг 6.6. Сортування масиву

 

using System;

 

namespace examp8

{

class Program

{

static void Main(string[] args)

{

// Кількість елементів

uint n = 0;

Console.Write("Введіть кількість елементів масиву: ");

try

{

// Вводимо кількість елементів з клавіатури

n = Convert.ToUInt32(Console.ReadLine());

}

catch (OverflowException ex)

{

// У разі помилкового введення (переповнювання)

Console.WriteLine(ex.Message + " Use default size (=10)");

}

catch (FormatException ex)

{

// У разі помилкового введення

Console.WriteLine(ex.Message+"Use default size (=10)");

}

// Якщо все погано, то створимо масив з 10 елементів

if (n == 0)

n = 10;

// Створення масиву

int[] ar = new int[n];

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

Random rand = new Random();

for (int i = 0; i < n; i++)

{

// Заповнюємо масив випадковими числами

// от -500 до 500

ar[i] = rand.Next(-500, 500);

Console.WriteLine("ar[{0}] = {1,8}", i, ar[i]);

}

Console.WriteLine();

for (int i = 0; i < n - 1; i++)

for (int j = i + 1; j < n; j++)

{

if (ar[i] > ar[j])

{

int t = ar[i];

ar[i] = ar[j];

ar[j] = t;

}

}

Console.WriteLine("Масив після сортування:");

for (int i = 0; i < n; i++)

Console.WriteLine("ar[{0}] = {1,8}", i, ar[i]);

Console.WriteLine();

Console.Read();

}

}

}

 

Лістинг 6.7. Сортування матриці по стовпцях в двовимірному масиві

using System;

 

namespace examp9

{

class Program

{

// Сортування матриці по стовпцях

static int[,] Sort_Column(int[,] mtr)

{

// число строк

int M = mtr.GetLength(0);

// число стовпців

int N = mtr.GetLength(1);

 

// Створення масиву

int[,] t_ar = new int[M, N];

int[,] s_ar = new int[N, 2];

 

Console.WriteLine("Сума елементів по стовпцях:");

//Находим сумму

for (int i = 0; i < N; i++)

{

s_ar[i, 0] = 0;

s_ar[i, 1] = i;

for (int j = 0; j < M; j++)

{

s_ar[i, 0] += mtr[j, i];

}

Console.Write("{0,8}", s_ar[i, 0]);

}

Console.WriteLine();

 

for (int i = 0; i < N - 1; i++)

for (int j = i + 1; j < N; j++)

if (s_ar[i, 0] > s_ar[j, 0])

{

int t = s_ar[i, 0];

s_ar[i, 0] = s_ar[j, 0];

s_ar[j, 0] = t;

t = s_ar[i, 1];

s_ar[i, 1] = s_ar[j, 1];

s_ar[j, 1] = t;

}

 

for (int i = 0; i < M; i++)

for (int j = 0; j < N; j++)

t_ar[i, j] = mtr[i, s_ar[j, 1]];

return t_ar;

}

 

// Виведення матриці

static void Print(int[,] mtr)

{

// число строк

int M = mtr.GetLength(0);

// число стовпців

int N = mtr.GetLength(1);

 

for (int i = 0; i < M; i++)

{

for (int j = 0; j < N; j++)

{

Console.Write("{0,8}", mtr[i, j]);

}

Console.WriteLine();

}

Console.WriteLine();

}

 

// Ініціалізація матриці випадковими значеннями

static void Init(int[,] mtr)

{

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

Random rand = new Random();

 

// Визначення розмірності матриці

int M = mtr.GetLength(0);

int N = mtr.GetLength(1);

 

for (int i = 0; i < M; i++)

{

for (int j = 0; j < N; j++)

{

// Забиваємо масив випадковими числами

// от -500 до 500

mtr[i, j] = rand.Next(-500, 500);

}

}

}

 

static void Main(string[] args)

{

// Розмірності матриці

uint M = 0, N = 0;

 

Console.WriteLine("Введіть розмірності матриці: ");

try

{

// Вводимо розмірності матриці з клавіатури

Console.Write("Строк: ");

M = Convert.ToUInt32(Console.ReadLine());

Console.Write("Столбцов: ");

N = Convert.ToUInt32(Console.ReadLine());

}

catch (OverflowException ex)

{

// У разі помилкового введення (переповнювання)

Console.WriteLine(ex.Message + " Use default size (=10x10)");

}

catch (FormatException ex)

{

// У разі помилкового введення

Console.WriteLine(ex.Message + " Use default size (=10x10)");

}

 

// Якщо все погано, то створимо масив з 10х10 елементів

if (M == 0 || N == 0)

M = N = 10;

 

// Створення масиву

int[,] ar = new int[M, N];

 

Console.WriteLine("Матрица:");

// Ініціалізація

Init(ar);

// Виведення

Print(ar);

 

// Сортування

int[,] t_ar = Sort_Column(ar);

 

Console.WriteLine();

Console.WriteLine("Відсортована матриця:");

// Виведення матриці

Print(t_ar);

 

}

}

}




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 488; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.035 сек.