Лабораторная работа №4 Вариант 17 / Вариант 17
.doc
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №4
по дисциплине
«Технология программирования»
на тему:
«Программирование алгоритмов генерации псевдослучайных чисел»
|
Студент |
|
|
|
. |
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Домашнев П.А. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2011
-
Задание
Задание
Написать программу, осуществляющую генерацию определенного количества псевдослучайных чисел из заданного пользователем интервала заданным методом и вывод их на экран. Количество чисел и интервал вводит пользователь. Программа должна также записывать сгенерированную псевдослучайную последовательность в файл. Формат файла – двоичный.
Вариант 17
Алгоритм поиска |
Мультипликативный метод |
-
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <malloc.h>
void numGen(int start, int end, char* name, int amount)
{
int x0;
FILE* fp = fopen(name, "wb");
if (fp == NULL)
{
printf("Ошибка открытия файла %s", name);
return;
}
int const c = 71; // Задаем константы с и m для алгоритма
int const m = 101; //
x0 = ((c + m + amount) % (end - start)) + start; // Задаем произвольное первое число из интервала
printf("%i ", x0);
fwrite(&x0, sizeof(int), 1, fp);
for (int i = 1; i < amount; i++)
{
x0 = (x0 * c) % m; // Алгоритм
x0 = (x0 % (end - start)) + start; // Приведение числа к интервалу
printf("%i ", x0);
fwrite(&x0, sizeof(int), 1, fp);
}
fclose(fp);
}
void main()
{
setlocale(LC_ALL, "Russian");
int start, end, amount;
char name[256];
printf("Генерация случайных значений\n\rВведите начальный интервал: ");
scanf("%i", &start);
printf("Введите конечный интервал: ");
scanf("%i", &end);
if (start >= end)
{
printf("Интервал введен неверно");
return;
}
printf("Введите количество чисел: ");
scanf("%i", &amount);
printf("Введите имя файла: ");
scanf("%s", name);
numGen(start, end, name, amount);
_getch();
}
-
Контрольный пример
-
Блок-схема
-
Вывод
При выполнении данной лабораторной работы я получил навыки программирования методов генерации псевдослучайных чисел.
-
Список использованной литературы
-
Шилдт Г. Искусство программирования на C++. БХВ.2005
-
Шилдт Г. C++ Руководство для начинающих. Вильямс.2005
-
Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004