Tidak, algoritme Anda tidak dapat diskalakan. Apa yang telah saya lakukan sebelumnya adalah mengeluarkan nomor secara berurutan (+1 setiap kali) dan kemudian meneruskannya melalui operasi XOR untuk mencampuradukkan bit sehingga memberi saya nomor yang tampaknya acak. Tentu saja mereka tidak benar-benar acak, tetapi mereka terlihat begitu di mata pengguna.
[Sunting] Informasi tambahan
Logika algoritma ini seperti ini, Anda menggunakan urutan yang diketahui untuk menghasilkan angka unik dan kemudian Anda memanipulasinya secara deterministik, sehingga tidak terlihat serial lagi. Solusi umumnya adalah dengan menggunakan beberapa bentuk enkripsi, yang dalam kasus saya adalah flipflop XOR, karena itu secepat mungkin, dan memenuhi jaminan bahwa angka tidak akan pernah bertabrakan.
Namun Anda dapat menggunakan bentuk enkripsi lain, jika Anda ingin lebih memilih angka yang terlihat lebih acak, melebihi kecepatan (misalnya Anda tidak perlu membuat banyak ID sekaligus). Sekarang poin penting dalam memilih algoritma enkripsi adalah "jaminan bahwa angka tidak akan pernah bertabrakan". Dan cara untuk membuktikan apakah suatu algoritma enkripsi dapat memenuhi jaminan ini adalah dengan memeriksa apakah bilangan asli dan hasil enkripsi memiliki jumlah bit yang sama, dan bahwa algoritma tersebut dapat dibalik (bijection).
[Terima kasih kepada Adam Liss &CesarB untuk memperluas solusi]