Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №4 Вариант 2

.doc
Скачиваний:
7
Добавлен:
20.06.2014
Размер:
210.94 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №4

«Программирование алгоритмов генерации псевдослучайных чисел»

по дисциплине

«Технология программирования»

Студент

Бутаков В.В.

подпись, дата

фамилия, инициалы

Группа

АС-09

Принял

Домашнев П.А.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2010

  1. Задание

Цель работы

Приобретение навыков программирования алгоритмов генерации псевдослучайных чисел

Задание кафедры

Написать программу, осуществляющую генерацию определенного количества псевдослучайных чисел из заданного пользователем интервала заданным методом и вывод их на экран. Количество чисел и интервал вводит пользователь. Программа должна также записывать сгенерированную псевдослучайную последовательность в файл. Формат файла – двоичный.

Вариант 2

Алгоритм поиска: мультипликативный метод

Краткие теоретические сведения.

Мультипликативный метод

Работа метода определяется двумя целыми константами с и m. Для получения псевдослучайных чисел первоначально берется произвольное целое число х0. Генерация (i+1)-го псевдослучайного числа происходит из i-го по правилу: хi+1 = c*xi % m,

  1. Блок-схема программы

  1. Листинг программы

#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();

}

  1. Контрольный пример