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

Реализации различных алгоритмов на Си / генерация мультипликативный метод

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

2

  1. Задание

Задание

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

Вариант 7.

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

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

Задаются константы C и m. Берется произвольное число, следующим псевдослучайным числом будет текущее, умноженное на C и разделенное по модулю m.

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

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <locale.h>

void main()

{

FILE *fl;

setlocale(LC_ALL,"Rus");

int c, m, kolvo_el, *A, first, interval1, interval2, p=0;

printf("Введите с, m, количество элемнтов, начальный элемент, интервал: ");

scanf("%d %d %d %d %d %d", &c, &m, &kolvo_el, &first, &interval1, &interval2);

A=(int*)malloc(kolvo_el*sizeof(int));

A[0]=first;

printf("\n%d\t", A[0]);

fl=fopen("D:/1.txt","ab+");

fwrite((char*)&A[0],sizeof(int),1,fl);

for(int i=1;i<kolvo_el;i++)

{

A[i]=(A[i-1]*c)%m;

if((A[i]>interval2)||(A[i]<interval1))

{

i=i-1;

p++;

if(p==1000)

{

printf("Не удается сгенерировать число в данный интревал");

p=0;

i++;

}

}

else

{

printf("%d\t", A[i]);

fwrite((char*)&A[i],sizeof(int),1,fl);

}

}

getch();

}