Лабораторная работа №4 Вариант 2
.docФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №4
«Программирование алгоритмов генерации псевдослучайных чисел»
по дисциплине
«Технология программирования»
|
Студент |
|
|
|
Бутаков В.В. |
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
АС-09 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Домашнев П.А. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2010
-
Задание
Цель работы
Приобретение навыков программирования алгоритмов генерации псевдослучайных чисел
Задание кафедры
Написать программу, осуществляющую генерацию определенного количества псевдослучайных чисел из заданного пользователем интервала заданным методом и вывод их на экран. Количество чисел и интервал вводит пользователь. Программа должна также записывать сгенерированную псевдослучайную последовательность в файл. Формат файла – двоичный.
Вариант 2
Алгоритм поиска: мультипликативный метод
Краткие теоретические сведения.
Мультипликативный метод
Работа метода определяется двумя целыми константами с и m. Для получения псевдослучайных чисел первоначально берется произвольное целое число х0. Генерация (i+1)-го псевдослучайного числа происходит из i-го по правилу: хi+1 = c*xi % m,
-
Блок-схема программы
-
Листинг программы
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define c 367
int min,max,k,i=1;
int* data;
FILE* D;
void multi()
{
if(i>k-1)return;
data[i]=c*(data[i-1]-min)%(max-min+1)+min;
i++;
multi();
}
void main()
{
char name [20];
printf("Input file's name:\t");
scanf("%s",name);
D=fopen(name,"wb");
printf("Input min element:\t");
scanf("%d",&min);
printf("Input max element:\t");
scanf("%d",&max);
printf("Input count elements:\t");
scanf("%d",&k);
data=(int*)malloc(sizeof(int)*k);
printf("Input 1 element:\t");
scanf("%d",&data[0]);
multi();
for(int i=0;i<k;i++)
{
printf("x[%d]=%d%c",i+1,data[i],10);
fprintf(D,"%d ",data[i],10);
}
fclose(D);
getch();
}
-
Контрольный пример