Для псевдослучайного генератора (связанного с игрой) мне нужно создать начальное число из строки. Это не для безопасности, но я все же предпочитаю, чтобы это начальное число было как можно более случайным.
Я не использую 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 (пока) - но это легко исправить
- Я не уверен насчет распространения этой случайности. Это не обязательно должно быть идеально, но если есть более простой метод с лучшими результатами, я предпочитаю это.
Есть ли более распространенный способ генерации псевдослучайного начального числа из строки?