Задача: Генерация датчика псевдослучайных чисел(ДСЧ Фибоначчи)

Статус
Закрыто для дальнейших ответов.

sasha465

Well-known member
29.03.2009
69
0
#1
Помогите пожалуйста разобраться с методом генерации ДСЧ Фибоначчи или иначе его называют Метод Фибоначчи с запаздываниями. Честно говоря информации по данному методу в интернете найти практически не удалось, везде так или иначе цитируют материал из википедии(или наоборот). Там указано две непонятных формулы, непонятных в том смысле что непонятно что они должны делать и главное как) Так что прошу тех, кому известен такой метод не по наслышке рассказать о нем по подробнее, буду очень признателен)
 

DarkKnight

Well-known member
01.08.2010
653
0
#2
C++:
/*
Генератор случ. величины методом Фибоначчи с запозданием
*/
/*
codeby.net
Autor: DarkKnight125
*/
#include <iostream>
#include <time.h>

using namespace std;

unsigned int lagA = 0, lagB = 0;

void main(void)
{
int Count = 0;
setlocale(LC_ALL,"Russian");
cout<<"Введите Лаг a = ";
cin>>lagA;
cout<<"Введите Лаг b = ";
cin>>lagB;
cout<<"Введите кол-во генерируемых значений : ";
cin>>Count;

//Для старта фибоначчиевому датчику требуется max{a,b} случайных чисел,
//которые могут быть сгенерированы простым (!!!)конгруэнтным датчиком(!!!).
srand(time(NULL)); //И так инициализируем конгруэнтный датчик
int* Arr = new int[max(lagA,lagB)]; //Генерируем массив 
for (int i = 0; i<max(lagA,lagB); i++)
Arr[i] = rand(); //Заполняем его случ. величинами которые сгенерировали конгруэнтным датчиком

//Генерируем случ. величины
for (int i=Count; i>0; i--)
{
int Res; //Результат
if (Arr[max(lagA,lagB)-lagA] >= Arr[max(lagA,lagB)-lagB])
{
Res = Arr[max(lagA,lagB)-lagA] - Arr[max(lagA,lagB)-lagB];
} else Res = Arr[max(lagA,lagB)-lagB]-Arr[max(lagA,lagB)-lagA];

for (int i = 0; i<max(lagA,lagB); i++)
Arr[i] = rand(); //Генерируем массив заново на каждой итерации

cout<<Res<<endl; //Выведим на экран

}


}
 
Статус
Закрыто для дальнейших ответов.