Няшная / Говнокод #21337 Ссылка на оригинал

0

  1. 1
  2. 2
Ко-ко-ко сишный rand говно ко-ко-ко
А зачем вам лучший рандом, чтобы 10 уникальных гуидов сгенерить?

Запостил: huesto huesto, (Updated )

Комментарии (44) RSS

    • Чем отличается псевдослучайность от случайности?
      Ответить
      • Алгоритм генерации псевдослучайных чисел получает очередное из предыдущего. Если мы однажды запомнили цепочку сгенерированных случайных чисел, то потом, если встретим число из этой цепочки, сможем угадать следующее.

        Если же числа истинно случайные (например, получаемые со счётчика Гейгера или с других внешних датчиков), запоминать их бессмысленно, ибо на повтор цепочки надеяться уже нельзя.
        Ответить
        • А давайте обучим марковскую цепь на выхлопе счетчика гейгера и будем с ее помощью генерировать вореции истинно случайные числа!
          Ответить
          • Её же обучать придётся долго.

            Классический алгоритм ГПСЧ вроде X[i+1] = (a * X[i] + b) mod c после нескольких чисел входит в бесконечный цикл. После первого же повтора можно остановиться и дальше не изучать.

            А выхлоп счётчика Гейгера может как бы входить в цикл и, как ни в чём не бывало, выходить из него. Т. е. у истинно случайной цепочки повтор ничего не значит. Значит, нам придётся обучать цепь выходу из циклов, а для этого цепь должна быть длинной.
            Ответить
            • Научить программу делать случайные вещи не получая данных извне. Казалось бы, невозможно.
              Ответить
              • Возможно. Короче есть специальные компании, которые продают целые много терабайтные винты, забитые равномерно распределенным шумом. Винты уникальны. Этого хватает, чтобы миллионы лет играть на игровом автомате. Поверь.
                Ответить
              • А вообще случайные данные всегда есть откуда получить. Число пакетов сетевухи * число страниц поднятых из свопа * на напряжение розетки * на загрузку цпу и тд
                Ответить
          • > Марковскую цепь.
            А ГПСЧ для неё какой возьмём?
            Ответить
          • вот я это и пытался донести создавая пост
            ИМХО, она нахуй не нужна

            как и не нужна абсолютно идеальная превдослучайность
            Ответить
            • > не нужна абсолютно идеальная превдослучайность
              Пиздишь.
              Ответить
            • Хорошая (даже криптографическая) псевдослучайность нужна, а вот реальная случайность используется для инициализации ГПСЧ и хватит.
              Ответить
          • Ну практически незачем. Теоретически если враг научится повторять детерменированную цепочку псевдослучайных чисел, то сможет нагибать криптографию и досить алгоритмы.
            Ответить
                • Он везде случайный, т.е. разный на разных машинах, но естественно одинаковый в одной VM.
                  Ответить
                  • тогда зачем нагибать его? и ты уверен, что там гсч работает, а не вычисление хэшкода на основе адреса в памяти?
                    Ответить
                    • Смысл в том, что строки имеющие одинаковый хешкод на одной машине должны иметь разный на другой. Где-то там примешивается инициализация.
                      Ответить
                  • > Он везде случайный т.е. разный на разных машинах

                    Отвечаешь? А если проверю на 2^32/64 машинах?
                    Ответить
  • Откуда взялись 10 гуидов? А если ты задачи по 10к воркерам распихиваешь с помощью функции rand()%10000? Смекаешь, какое будет распределение нагрузки?
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8