Простой псевдослучайный алгоритм

Проблема со связанными библиотеками, пользовавшимися php_pgsql.dll - как libpq.dll, OpenSLL и т.д. Необходимо найти их (от распределения zip Пост-ГРЭС, от установленного psqlODBC драйвера и т.д.) и поместить их в папку, которая находится в ПУТИ. Что касается списка всего DLLs - используют Зависимость MS Walker (depends.exe).

Другой важный бит - Apache (при использовании Apache, который является) имеет свой собственный набор OpenSSL DLLs. Замените или просто переименуйте их так для не столкновения с теми, которые от распределения Пост-ГРЭС.

5
задан Stefan Steinegger 8 October 2009 в 13:50
поделиться

3 ответа

Вы (возможно) легко сможете сделать это на C #, используя класс Random:

public int GetPseudoRandomNumber(int input)
{
    Random random = new Random(input);
    return random.Next();
}

Поскольку вы явно задаете случайное значение на входе, вы всегда будете получать один и тот же результат при одинаковых входное значение.

3
ответ дан 13 December 2019 в 22:11
поделиться

Я удаляю код microsoft из этого ответа, файл кода GNU намного длиннее, но в основном он содержит его из http://cs.uccs.edu/~cs591/bufferOverflow /glibc-2.2.4/stdlib/random_r.c:

int32_t val = state[0];
val = ((state[0] * 1103515245) + 12345) & 0x7fffffff;
state[0] = val;
*result = val;

для ваших целей семя - это состояние [0], поэтому оно будет больше похоже на

int getRand(int val)
{
    return ((val * 1103515245) + 12345) & 0x7fffffff;
}
4
ответ дан 13 December 2019 в 22:11
поделиться

Первые два правила предлагают фиксированную перестановку или перестановку входных данных, но третье правило требует дальнейшего преобразования.

Есть ли какие-либо дополнительные ограничения на то, какими должны быть выходы, направить это преобразование? - например, есть ли входной набор выходных значений на выбор?

Если единственное руководство - «нет макс.», я бы использовал следующее ...

  1. Применить хеш-алгоритм ко всему входу, чтобы получить первый выходной элемент. CRC может работать, но для получения более «случайных» результатов используйте алгоритм криптографического хеширования, такой как MD5.

  2. Используйте алгоритм следующей перестановки (множество ссылок в Google) на входе.

  3. Повторите хеш-затем- следующая перестановка до тех пор, пока не будут найдены все требуемые выходы.

Следующая перестановка может быть излишней, вы, вероятно, могли бы просто увеличить первый вход (и, возможно, при переполнении,

1
ответ дан 13 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: