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

Тема в разделе "C/C++/C#", создана пользователем sasha465, 25 ноя 2010.

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

    sasha465 Well-Known Member

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Код (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; //Выведим на экран

    }


    }
     
  3. sasha465

    sasha465 Well-Known Member

    Регистрация:
    29 мар 2009
    Сообщения:
    69
    Симпатии:
    0
    Оо спасибо большое!)
     
Загрузка...
Похожие Темы - Задача Генерация датчика
  1. Янчик
    Ответов:
    0
    Просмотров:
    490
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    783
  3. elzim
    Ответов:
    0
    Просмотров:
    932
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.128
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.108
Статус темы:
Закрыта.

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