"); for (k=0; k Скачать презентацию Идет загрузка презентации. Пожалуйста, подождите Презентация была опубликована
9 лет назад
пользователемЕгор Пекарский
1
Функция стандартной библиотеки языка С (stdlib.h) rand() генерирует псевдослучайное число на интервале значений от 0 до RAND_MAX (константа, обычно 32767). Чтобы получить случайные числа от 0 до 9 – используется получение остатка от деления rand() % 10. Если нам нужны числа от 1 (а не от 0) до 9, то можно прибавить единицу -- rand() % 9 + 1, т.е. генерируется случайное число от 0 до 8, и после прибавления 1 оно превращается в случайное число от 1 до 9. Для получения при каждом вызове rand() различных случайных последовательностей надо сначала вызвать функцию srand(), которая в качестве аргумента просит число. И по этому числу уже будет генерироваться случайное число функцией rand(): srand(time(NULL)); chislo = rand(); CPascal Для моделирования ситуаций, когда требуется, чтобы результат работы программы был случайным в определенных пределах, во многих языках программирования присутствуют встроенные функции, код которых выдает случайные числа. На самом деле числа не совсем случайные, а псевдослучайные, т.к любая программа представляет собой детерминированный алгоритм и с его помощью реализовать случайность невозможно. Алгоритмы реализации псевдослучайных чисел оцениваются по длине последовательности, после которой последовательность начинает повторяться. 1 Функции генерации случайных последовательностей Для генерации псевдослучайных чисел в заданных диапазонах используется функция random. Перед ее использованием обычно выполняется процедура инициализации датчика случайных чисел - randomize; иначе функция при вызове всегда будет выдавать одну и ту же последовательность чисел. Randomize задает начальное значение последовательности, от которого вычисляются все последующие. При каждом запуске программы это значение будет разным, а значит и результат работы функции random будет различным. Функция random генерирует случайное число в диапазоне от 0 (включительно) до единицы. Если в скобках указан аргумент, то от 0 до значения указанного в скобках (не включая само значение). ВМП
2
CPascal 2 Функции генерации случайных последовательностей Выражение random (10) генерировать любое число в диапазоне [0, 10). Для получения значения в другом диапазоне (не от нуля, например, от -100 до 100, то надо записать такое выражение: random (200) – 100. В результате, сначала будет получено число из диапазона [0, 199], а затем из него будет вычтена сотня. И если случайное число было меньше 100, то результат выражения будет отрицательным.) В примере программы сначала с помощью процедуры randomize инициализируется датчик случайных чисел. Затем переменной n присваивается случайное значение в диапазоне [5, 12). Значение переменной n используется для определения количества итераций цикла for. В цикле for генерируются случайные числа в диапазоне [0, 50) и выводятся на экран. var n, i, x: integer; begin randomize; n := random (7) + 5; for i := 1 to n do begin x := random (100) - 50; write (x:5) end; readln end. Пример: #include int main() { int rand_chislo; srand(time(NULL)); for (int i = 0; i <5; i++ ) { rand_chislo = 2 + rand() %7; printf (" rand_chislo =%d ", rand_chislo); } return 0; } В оболочке программирования Borland С/C++ в виде макросов реализованы random(x) и randomize() аналогичные Pascal. Пример: #include int main(void) { randomize(); /* задаёт случайные начальные значения при запуске функции random() */ printf("Случайное число в диапазоне от 0 до 99: ", random(100)); return 0; } Будем использовать random для заполнения массивов. ВМП
3
Формат описания Функции: [класс] [(тип 1 имя_формального_параметра 1, …, типN имя_формального_параметраN)] [throw (исключения)] { } Формат вызова Функции: ([фактич_параметр 1, …, фактич_параметры]); // Сортировка мас. целых чисел выборочнымым. методом #include #define sz 5 // размерность массива void main () { int a[sz]; // массив целых чисел int i; // элем., от которого ведется поиск мин. элем. int min; // мин. элем. в части мас. от i до конца мас. int j; // элемента сравниваемого с мин. int buf; // буфер, исп. при обмене элементов массива int k; // индекс для ввода и вывода printf ("\n Введите в одной строке %i", sz); printf (" целых чисел и нажмите Enter \n"); printf ("-> "); for (k=0; k
4
// Сортировка мас. целых чисел выборочнымым. методом #include #define sz 5 // размерность массива void main () { int a[sz]; // массив целых чисел int i; // элем., от которого ведется поиск мин. элем. int min; // мин. элем. в части мас. от i до конца мас. int j; // элемента сравниваемого с мин. int buf; // буфер, исп. при обмене элементов массива int k; // индекс для ввода и вывода printf ("\n Введите в одной строке %i", sz); printf (" целых чисел и нажмите Enter \n"); printf ("-> "); for (k=0; k
5
Формат описания Функции: [класс] [(тип 1 имя_формального_параметра 1, …, типN имя_формального_параметраN)] [throw (исключения)] { } Формат вызова Функции: ([фактич_параметр 1, …, фактич_параметры]); #include #define SZ 5 //Размер исходных массивов void main() { int a[SZ], b[SZ]; // исходные массивы int c[SZ*2]; // массив-результат int k,i,m; // индексы массивов a, b и c printf ("Слияние двух упорядоченных массивов в один,\n"); printf ("ввод элементов через пробел, завершение: Enter\n"); printf ("\n Введите первый массив %i -> ", SZ); for (k=0; k
6
#include // Слияние двух упорядоченных массивов #include #define SZ 5 //Размер исходных массивов void main() { int a[SZ], b[SZ]; // исходные массивы int c[SZ*2]; // массив-результат int k,i,m; // индексы массивов a, b и c printf ("Слияние двух упорядоченных массивов в один,\n"); printf ("ввод элементов через пробел, завершение: Enter\n"); printf ("\n Введите первый массив %i -> ", SZ); for (k=0; k
7
void mas_split (int a[sz], int b[sz], int c[sz*2]) /* Функция слияние двух упорядоченных по возрастанию массивов целых чисел в один */ { int k,i,m; // индексы массивов a, b и c k=i=m=0; do { if (a[k] < b[i]) c[m++] = a[k++]; else if (a[k] > b[i]) c[m++] = b[i++]; else { c[m++]=a[k++]; c[m++]=b[i++];} } while ((k < sz) && (i < sz)); while (k
8
void main() /* Ввод двух целочисленных массивов, сортировка обеих массивов и слияние этих массивов в третий массив */ { int a[sz], b[sz]; // исходные массивы целых чисел int c[sz*2]; // массив-результат int d, l, n; // индексы массивов A, B и C randomize(); printf (" Сортировка и слияние двух упорядоченных по возрастанию массивов в один,\n"); printf (" элементы массива вводите через пробел, завершение ввода массива: Enter \n"); printf ("\n Введите первый массив %i целых чисел -> ", sz); for (d = 0; d < sz; d++) a[d] = random(100); // как вариант: scanf ("%i", &a[d]); printf ("\n Введите второй массив %i целых чисел -> ", sz); for (l = 0; l < sz; l++) b[l] = random(100); // как вариант: scanf ("%i", &b[l]); direct_sort (a); // Вывод отсортированного первого массива printf ("\n Отсортированный первый массив -> "); for (d = 0; d < sz; d++) printf ("%i ", a[d]); direct_sort (b); // Вывод отсортированного второго массива printf ("\n Отсортированный второй массив -> "); for (l = 0; l < sz; l++) printf ("%i ", b[l]); mas_split (a, b, c); // Вывод результата слияния двух массивов printf("\n Массив-результат: \n"); for (n = 0; n <2*sz; n++) printf ("%i ", c[n]); } C C Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов Головная программа: 8 МАССИВЫ. Сортировка Для работы функции randomize() надо подключать библиотеку time.h; функция random(x) находится в библиотеке stdlib.h ВМП
", sz); for (d = 0; d < sz; d++) a[d] = random(100); // как вариант: scanf ("%i", &a[d]); printf ("\n Введите второй массив %i целых чисел -> ", sz); for (l = 0; l < sz; l++) b[l] = random(100); // как вариант: scanf ("%i", &b[l]); direct_sort (a); // Вывод отсортированного первого массива printf ("\n Отсортированный первый массив -> "); for (d = 0; d < sz; d++) printf ("%i ", a[d]); direct_sort (b); // Вывод отсортированного второго массива printf ("\n Отсортированный второй массив -> "); for (l = 0; l < sz; l++) printf ("%i ", b[l]); mas_split (a, b, c); // Вывод результата слияния двух массивов printf("\n Массив-результат: \n"); for (n = 0; n <2*sz; n++) printf ("%i ", c[n]); } C C Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов Головная программа: 8 МАССИВЫ. Сортировка Для работы функции randomize() надо подключать библиотеку time.h; функция random(x) находится в библиотеке stdlib.h ВМП">
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc. Вход в систему
Функция стандартной библиотеки языка С (stdlib.h) rand() генерирует псевдослучайное число на интервале значений от 0 до RAND MAX (константа, обычно 32767). - презентация
Похожие презентации
Презентация на тему: " Функция стандартной библиотеки языка С (stdlib.h) rand() генерирует псевдослучайное число на интервале значений от 0 до RAND MAX (константа, обычно 32767)." — Транскрипт:
Похожие презентации
Сортировка методом пузырька, выбором (Pascal) Кокарева Светлана Ивановна. О проекте
MyShared
All rights reserved.