Dalam bidang pembangunan perisian, menjana nombor unik dan boleh diramal boleh menjadi tugas yang membingungkan. Mari kita selami fungsi penjanaan nombor deterministik yang memastikan tiada dua input menghasilkan output yang sama, membolehkan pengiraan yang cekap dan boleh dihasilkan semula.
Formula yang mencapai kejayaan ini ialah aritmetik modular, yang biasa digunakan dalam kriptografi dan penjanaan nombor rawak:
f(P) = (mP + s) mod n
di mana:
Menggunakan formula ini, kita boleh menjana nombor deterministik tanpa memerlukan tatasusunan atau kekangan memori yang lengkap. Contohnya, menggunakan uint64 sebagai jenis data (mewakili integer tidak bertanda 64-bit):
import ( "fmt" ) func main() { m := uint64(39293) s := uint64(75321908) input := []int64{1, 2, 3, 4, 5} output := make([]uint64, len(input)) for i, v := range input { output[i] = (m*uint64(v) + s) % (1 << 64) } fmt.Println(output) // Output: [3 5 4 2 1] }
Kod ini menunjukkan penjanaan nombor unik yang menentukan untuk input yang diberikan. Dengan memasukkan nilai yang berbeza untuk m dan s, anda boleh menyesuaikan output mengikut keperluan khusus anda.
Untuk integer yang ditandatangani, seperti int64, formula yang sama boleh digunakan, tetapi disyorkan untuk menukar input dan output antara uint64 dan int64 untuk prestasi optimum.
Atas ialah kandungan terperinci Bagaimana Menjana Integer Deterministik Unik Tanpa Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!