Является ли генератор случайных чисел единичных двигателей детерминированным на разных платформах с одним и тем же начальным начальным числом или я должен реализовать свой собственный?
Я знаю, что в последнее время в генератор случайных чисел были внесены некоторые изменения.
Ответы приветствуются, у меня нет под рукой устройств для проведения каких-либо тестов, и я пока не нашел прямого заявления по этому вопросу.
unity
c#
random
cross-platform
eternalNoob
источник
источник
Ответы:
While I haven't had time to do any extensive testing, initial research suggests that the random number generator used is deterministic across different platforms. The exact implementation used is: Unity PRNG. See also: Unity Random Seed On Different Hardware.
With the Unity
Random
class, the exact state of the PRNG can be saved, see: Unity Random Sate.источник
Thomas answered the question as asked. The more important question is as follows:
There is a rather high likelihood for this being the case, but that isn't the same as a guarantee. So the answer, unfortunately, is "no, it is not". A guarantee would need to be explicitly stated in the documentation of Random, but currently there is no such thing.
Personally, even if there were such a guarantee, I'd recommend not to trust it - even with a guarantee there's still a chance of the implementation being changed by accident (a bug), or simply being deprecated and later removed. At some point you also might want to reuse the generator outside of the Unity framework. Instead of relying on Unity, just copy a random number generator someone else wrote (make sure you're allowed to use the code), and write a test to verify it satisfies your requirements for randomness.
источник
Используя Unity 2017.2.0f3, UnityEngine.Random, по- видимому, дает одинаковые результаты на разных платформах. Протестировано на Windows 10, macOS 10.12 Sierra и Android 7.
Чтобы проверить, я урезал созданный мной класс SeedFactory:
И MonoBehaviour для запуска теста:
И результаты у всех были одинаковые
источник