Apakah mesin unity engine angka acak deterministik lintas platform diberi benih awal yang sama atau haruskah saya menerapkan sendiri?
Saya tahu ada beberapa modifikasi pada generator angka acak baru-baru ini.
Jawaban dihargai, saya tidak memiliki perangkat untuk melakukan tes dan saya belum menemukan pernyataan langsung tentang masalah ini.
unity
c#
random
cross-platform
eternalNoob
sumber
sumber
Jawaban:
Sementara saya belum punya waktu untuk melakukan pengujian ekstensif, penelitian awal menunjukkan bahwa generator angka acak yang digunakan adalah deterministik di berbagai platform. Implementasi yang tepat digunakan adalah: Unity PRNG . Lihat juga: Unity Random Seed On Different Hardware .
Dengan
Random
kelas Unity , keadaan pasti PRNG dapat disimpan, lihat: Unity Random Sate .sumber
Thomas menjawab pertanyaan itu ketika ditanya. Pertanyaan yang lebih penting adalah sebagai berikut:
Ada kemungkinan yang agak tinggi untuk hal ini, tetapi itu tidak sama dengan jaminan. Jadi jawabannya, sayangnya, adalah " tidak, tidak ". Jaminan perlu secara eksplisit dinyatakan dalam dokumentasi Acak , tetapi saat ini tidak ada hal seperti itu.
Secara pribadi, bahkan jika ada jaminan seperti itu, saya akan merekomendasikan untuk tidak mempercayainya - bahkan dengan jaminan masih ada peluang implementasi diubah oleh kecelakaan (bug), atau hanya menjadi usang dan kemudian dihapus. Pada titik tertentu Anda juga mungkin ingin menggunakan kembali generator di luar kerangka Unity. Alih-alih mengandalkan Unity, salin saja generator angka acak yang ditulis orang lain (pastikan Anda diizinkan menggunakan kode), dan tulis tes untuk memastikannya memenuhi persyaratan Anda untuk keacakan.
sumber
Menggunakan Unity 2017.2.0f3, UnityEngine.Random tampaknya memberikan hasil yang sama di berbagai platform. Diuji pada Windows 10, macOS 10.12 Sierra, dan Android 7.
Untuk menguji, saya memangkas kelas SeedFactory yang saya buat:
Dan MonoBehaviour untuk menjalankan tes:
Dan hasilnya semua sama:
sumber