Создать псевдослучайное семя из строки в C#? - PullRequest
2 голосов
/ 24 апреля 2020

Для псевдослучайного генератора (связанного с игрой) мне нужно создать начальное число из строки. Это не для безопасности, но я все же предпочитаю, чтобы это начальное число было как можно более случайным.

Я не использую GetHashCode ():

  • реализация может отличаться для каждого. NET версия.
  • Я также не уверен насчет случайности GetHashCode ().

Сейчас я использую MD5 - см. Код ниже:

public static int GetSeedFromString(string value)
{
    using ( var md5 = MD5.Create() )
    {
        var inputBytes      = Encoding.ASCII.GetBytes(value);
        byte[] hashBytes    = md5.ComputeHash(inputBytes);

        // FIXME: force endianness for potential different systems
        return BitConverter.ToInt32(hashBytes, 0);
    }
}

Две проблемы :

  • это зависит от Endian (пока) - но это легко исправить
  • Я не уверен насчет распространения этой случайности. Это не обязательно должно быть идеально, но если есть более простой метод с лучшими результатами, я предпочитаю это.

Есть ли более распространенный способ генерации псевдослучайного начального числа из строки?

...