У меня есть приложение, где становится чрезвычайно заметно, если моя программа использует RNG, у которого есть шаблоны, основанные на его семени, поскольку он создает ландшафты на основе координаты x ландшафта. Хотя Random
работает хорошо, если вы каждый раз вызываете Next()
, мне нужно иметь один и тот же вывод каждый раз, когда я использую один и тот же ввод, и поэтому не могу полагаться на Next()
. Вместо этого я попытался просто сделать новый Random
каждый раз с входным семенем. Не очень хорошая идея, я знаю, и это показало. Шаблоны были чрезвычайно очевидны, с переменными высокими и низкими значениями и заметной общей тенденцией во всем ландшафте. Я бы предпочел не создавать новые генераторы каждый раз, но даже в этом случае я заглянул в криптографически безопасный RandomNumberGenerator
, чтобы узнать, могу ли я хотя бы временно его использовать. Как и ожидалось, я не могу его засеять, оставив меня без какого-либо воспроизводимого выхода (что скорее является точкой RandomNumberGenerator
).
Короче говоря, ни один из двух обычных ГСЧ не соответствует моей цели. Мне нужно иметь возможность взять число и вернуть случайное число, основанное на этом значении, без заметных паттернов на выходе. Есть ли другой способ использовать вышеприведенные два, или есть третий, который я не использовал раньше, чтобы лучше соответствовать моей цели?
Для ясности метод, который я пытаюсь написать, выглядит так:
public int RandomInt(int input)
{
int randomOutput;
//Be random
return randomOutput;
}
Это возвращает одно и то же значение каждый раз, когда задан тот же input
.