Реализации различных алгоритмов на Си / генерация мультипликативный метод
.doc
-
Задание
Задание
Написать программу, осуществляющую генерацию определенного количества псевдослучайных чисел из заданного пользователем интервала заданным методом и вывод их на экран. Количество чисел и интервал вводит пользователь. Программа должна также записывать сгенерированную псевдослучайную последовательность в файл. Формат файла – двоичный.
Вариант 7.
2 – мультипликативный метод
Мультипликативный метод
Задаются константы C и m. Берется произвольное число, следующим псевдослучайным числом будет текущее, умноженное на C и разделенное по модулю m.
-
Листинг программы
#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();
}