КАТЕГОРИИ: Архитектура-(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
Приклад застосування методів приведений в лістингу 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; Просмотров: 515; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |