1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

Тема в разделе "Вопросы новичков и не только", создана пользователем sasha465, 25 ноя 2010.

Статус темы:
Закрыта.
  1. sasha465

    sasha465 Well-Known Member

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

    DarkKnight Well-Known Member

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код:
    /*
    Генератор случ. величины методом Фибоначчи с запозданием
    */
    /*
    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; //Выведим на экран
    
    }
    
    
    }
     
  3. sasha465

    sasha465 Well-Known Member

    Репутация:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    69
    Симпатии:
    0
    Оо спасибо большое!)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей