Случайные числа

Discussion in 'WASM.A&O' started by c_plus_plus, Aug 9, 2008.

  1. c_plus_plus

    c_plus_plus New Member

    Blog Posts:
    0
    Привет всем :)
    Помогите плиззззз
    Пытаясь что-то сделать из известных мне генераторов случайных чисел, я обнаружил, что это просто одинаковые последовательности, ну или почти одинаковые. Алгоритмы собственно и есть псевдо :) при делании из них например белого шума ничего не выходит.

    Услышал что можно не привязываяь к железу родить случайную последовательность (чисто математически).

    Есть какие-нибуть идеии?

    И ещё, трудность в том, что это не прост числа, а очень очень длинные числа, как например 100!
     
  2. Freeman

    Freeman New Member

    Blog Posts:
    0
    CryptGenRandom не пробовал?
     
  3. chAlx

    chAlx New Member

    Blog Posts:
    0
    c_plus_plus:

    Что значит, "одинаковые последовательности"? Алгоритмы построены так, чтобы выдавать последовательности с заданным распределением (обычно как раз на белый шум ориентируются).

    А откуда начать отсчёт, это уже вопрос другого алгоритма. Обычно привязываются к таймеру и ещё каким-нибудь непостоянным аппаратным ресурсам.
     
  4. RElf

    RElf New Member

    Blog Posts:
    0
    см. статью ГПСЧ в википедии
     
  5. c_plus_plus

    c_plus_plus New Member

    Blog Posts:
    0
    Я пользовался стандартной библтотекой и ещё несколькими, какие попались. Но он что-то не получаеться. Сейчас у меня от случайных чисел зависет траиктория обьекта. Она почти одна и таже. Ну, например он должен выбирать путь к точке по разным, не похожим кривым, но так не получаеться. Когда записал несколько полследовательностей чисел и сравнил, они отличались всего несколькими числами (из 20 - 1, 2) :dntknw:

    CryptGenRandom - это от куда?


    А за статью спасибо, сча посмотрю
     
  6. s0larian

    s0larian New Member

    Blog Posts:
    0
    c_plus_plus, на С:
    Code (Text):
    1. srand(time());
    2. i = rand();
     
  7. bsnake

    bsnake New Member

    Blog Posts:
    0
    CryptGenRandom - это из Microsoft CryptoAPI

    srand(time()); использовать очень не безопасно, как и ГПСЧ. Если востановили\узнали одно значение ГПСЧ то все последующие и предыдущие высчитываются тривиально. А при иннициализации ГПСЧ текущем временем, очень легко атаковать шифр, если знать приблизительное время на хосте, с погрешностью +- 5 мин это получается 600000 возможных вариантов если time() возвращает с точностью до миллисекунды(или с точностью до секунды, я не уверен)

    Вывод юзай CryptoAPI, качественный rand при минимуме телодвижений. Или время от времени переинициализуй ГПСЧ данными которые нельзя предсказать (статистика сетевого трафик, движения мышкой, нажатия клавиатуры и т.п.)
     
  8. DEEP

    DEEP Андрей

    Blog Posts:
    0
    Ещё можно считать такты ЦП.
    RDTSC в помощь
     
  9. _basmp_

    _basmp_ New Member

    Blog Posts:
    0
    rdtsc
    bswap eax