Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABA_1sem.doc
Скачиваний:
7
Добавлен:
10.02.2016
Размер:
1.59 Mб
Скачать

Генератор случайных чисел

Многие задачи лабораторного практикума требуют ввода различных исходных данных. В случае, когда надо ввести одно два числа это можно осуществить вручную. Но если требуется ввести в качестве исходных данных большое количество чисел, например, матрицу, целесообразно использовать генератор случайных чисел.

Для работы с генератором случайных чисел Си++ предоставляет две функции: srand()иrand() описанные в библиотекеstdlib.

Перед началом работы генератор случайных чисел необходимо проинициализировать. Для этого надо вызвать функцию srand()с любым целым положительным аргументом.

Каждый вызов функции rand()позволяет получить целое случайное число в диапазоне от0до величиныRAND_MAX. Численное значение этой величины нас не интересует. В листинге 5 представлен пример программы печатающей на экране два случайных числа.

Листинг 5

/*Программа вывода на экране двух случайных

чисел при постоянном аргументе функции srand ()*/

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

# include <stdlib.h> // Подключение библиотеки содержащей

// описание функций srand() и rand()

void main( void )

{

srand (2); // Инициализация генератора

// Вывод на экран случайных чисел

cout << rand() << ‘\n’;

cout << rand() << ‘\n’;

}

Обратите внимание на то, что при каждом вызове программы (листинг 5) вы получаете одинаковую последовательность чисел. Это связано с тем, что мы инициализируем генератор случайных чисел одним и тем же числом srand(2). Если вы желаете получать каждый раз другую последовательность, то вам надо соответственно менять значение аргумента функцииsrand()при каждом новом запуске программы. Для этого можно, например, использовать системные часы. В листинге 6 представлен модифицированный вариант программы печатающей два случайных числа.

Листинг 6

/*Программа вывода на экране двух случайных

чисел при случайном аргументе функции srand ()*/

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

# include <stdlib.h> // Подключение библиотеки содержащей

// описание функций srand() и rand()

# include <time.h> // Подключение библиотеки содержащей

// описание функций работы с системными часами

void main( void )

{

srand ((unsigned) time(NULL)); // Инициализация генератора

// Вывод на экран случайных чисел

cout << rand() << ‘\n’;

cout << rand() << ‘\n’;

}

Теперь при каждом вызове программы вы будете получать новую последовательность чисел.

Задание к лабораторной работе

Набрать, откомпилировать и запустить следующие программы:

Листинг 7

/*Вывод с использованием функции printf()*/

#include <stdio.h>

void main( void )

{

printf( “I love \” Algorithmization and programming!\”\n” );

}

Листинг 8

/*Вывод с использованием оператора <<*/

#include <iostream.h>

void main( void )

{

cout << “I love\n”;

cout << “\”Algorithmization and programming!”\n” );

}

Листинг 9

/*Форматированный вывод с использованием функции printf()

Программа выводит: фамилию, имя, группу и порядковый

номер по списку*/

#include <stdio.h>

void main( void )

{

printf( “I am %s\nGroup: %s\nOrder number: %d\n”, “Ivanov Ivan”, “TA-0113”, 1 );

}

Примечание!В программе представленной в листинге 9, каждый студент должен вписать свои данные.

Листинг 10

/*Ввод/вывод с использованием операторов << >>

программа ожидает ввода элементов матрицы 2х2,

а затем выводит матрицу на экран*/

#include <iostream.h>

void main( void )

{

int a, b, c, d;

cout << "Input elements\n";

cin >> a >> b >> c >> d;

cout << “Matrix 2x2\n”;

cout << a << ‘\t’ << b << ‘\n’;

cout << c << ‘\t’ << d << ‘\n’;

}

После запуска данной программы на экране появляется строка:

Input elements

Далее вам необходимо ввести четыре целых числа. Ввод очередного числа завершается нажатием клавиши Enter.

Листинг 11

/*Модифицированный вариант программы листинг 10.

Элементы матрицы формируются при помощи генератора

случайных чисел*/

#include <iostream.h>

# include <stdlib.h>

# include <time.h>

void main( void )

{

srand ((unsigned) time(NULL));

int a, b, c, d;

a = rand();

b = rand();

c = rand();

d = rand();

cout << “Matrix 2x2\n”;

cout << a << ‘\t’ << b << ‘\n’;

cout << c << ‘\t’ << d << ‘\n’;

}

В протоколе необходимо привести листинги всех набранных программ. Каждый листинг должны быть снабжен комментариями.

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