Silverlight System.Random секвенирование кроссплатформенности

Мне нужно знать влияние различных платформ на System.Random объект (Silverlight). Является ли последовательность одинаковой на Mac, ПК и в 32 / 64-битном формате?

2 ответа

Решение

Алгоритм генерации случайных чисел кодируется во время выполнения. Следовательно, независимо от платформы вы должны увидеть один и тот же набор "случайных" чисел для данного начального значения.

Внешнее поведение конструктора по умолчанию для Random (где начальное значение основано на времени) может незначительно отличаться от платформы к платформе. Например, быстрое создание экземпляров Random может создать несколько экземпляров, которые генерируют одну и ту же последовательность, распространение этих "дубликатов" может различаться в зависимости от условий, включая платформу.

Извините за мой "глупый" ответ, но, на мой взгляд, случайные числа должны всегда считаться случайными, и, следовательно, созданные последовательности должны обрабатываться как НЕ одинаковые в любом "домене". Я знаю, что генераторы случайных чисел.NET (или Silverlight) используют псевдослучайный алгоритм в зависимости от начального значения и будут генерировать одинаковую числовую последовательность при использовании одного и того же начального значения, но я просто не буду полагаться на этот факт.

Кажется, у вас есть какое-то "ожидание", когда вам нужно синхронизировать случайные числа на нескольких платформах, и использование генератора случайных чисел для последовательностей ожидаемых значений выглядит странно для меня.

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

Просто мое мнение.

Другие вопросы по тегам