Генерация случайных чисел с известным начальным значением

Я отлаживаю 64-битный двоичный файл Linux ELF, который использует time() для создания семени. Затем это начальное число используется srand() для начального заполнения генератора случайных чисел. И rand() используется для генерации случайного числа.

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

seed = 0x93ae5c6

srand(seed)

rand() returns 0x000000003173C91C

Если я использую Python для генерации случайного числа, я получаю другой результат

import random
random.seed(0x93ae5c6)
random.random() returns 0.8019104241491927

Это потому, что Python генерирует случайные числа иначе, чем glibc в Linux?


person Neon Flash    schedule 27.01.2019    source источник
comment
Да, python использует другой rng. Кроме того, методы, которые вы используете, на самом деле несопоставимы.   -  person President James K. Polk    schedule 27.01.2019
comment
Есть ли способ воспроизвести результаты с помощью Python? или я должен скомпилировать двоичный файл, используя gcc в Linux, и, возможно, это будет генерировать те же самые случайные числа? Зависит ли генератор случайных чисел от версии libc?   -  person Neon Flash    schedule 27.01.2019


Ответы (1)


Попробуйте этот
порт Python цепочки GLIBC

person Alex Python    schedule 27.01.2019