Jika Anda membatasi diri Anda untuk siklus penuh LCG PRNG maka jawabannya mudah, menurut definisi itu hanya m .
Untuk menemukan periode non-siklus LCG PRNG untuk benih yang diberikan Anda hanya perlu menghitung jumlah iterasi dari PRNG sampai menghasilkan nilai benih sekali lagi.
Dari halaman wikipedia yang dirujuk :
Panjang periode
The periode dari LCG umum paling m , dan untuk beberapa pilihan yang jauh lebih sedikit dari itu. Asalkan c bukan nol, LCG akan memiliki periode penuh untuk semua nilai seed jika dan hanya jika :
- c danm yangrelatif prima,
- a - 1 habis dibagi oleh semuafaktor primadarim
- a - 1 adalah kelipatan dari 4 jikam adalah kelipatan dari 4.
Sementara LCGs mampu menghasilkan angka pseudorandom yang layak , ini sangat sensitif terhadap pilihan parameter c , m , dan Sebuah .
Secara historis, pilihan yang buruk telah menyebabkan implementasi LCG yang tidak efektif. Contoh ilustratif dari hal ini adalah RANDU yang banyak digunakan pada awal 1970-an dan membawa banyak hasil yang saat ini sedang dipertanyakan karena penggunaan LCG yang buruk ini.
Mengapa Anda ingin menggunakan generator siklus penuh
Jika Anda tidak membatasi diri untuk siklus penuh LCG PRNG maka Anda mengambil risiko besar .
Jika kamu tidak tahu bahwa LCG yang diberikan adalah siklus penuh maka Anda bisa berakhir dengan generator dengan jumlah urutan berbeda yang sewenang-wenang, beberapa di antaranya bisa sangat memalukan dan memiliki keacakan yang mengerikan, bahkan mungkin lebih buruk daripada generator RANDU yang terkenal itu. .
Anda benar-benar tidak ingin harus memeriksa setiap nilai seed yang mungkin untuk memastikan bahwa ia menghasilkan urutan yang cukup lama untuk aplikasi Anda.
Bacaan lebih lanjut
Untuk primer yang sangat baik pada generator angka acak pseudo, saya akan sangat menyarankan Anda membaca bab Resep Numerik pada Angka Acak.