• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы sasha465
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

sasha465

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

DarkKnight

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; //Выведим на экран

}


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!