Penjanaan Nombor Deterministik dan Unik
Memandangkan keperluan untuk menjana integer deterministik yang memetakan secara unik kepada setiap nombor input, ia mungkin kelihatan seperti mustahilЗадача . Walau bagaimanapun, terdapat formula matematik yang boleh memenuhi keperluan ini.
Formula Transformasi
Formula transformasi berasal daripada aritmetik modular:
f(P) = (mP + s) mod n
di mana:
Formula ini memastikan setiap input P memetakan kepada output unik dalam julat 0 kepada n-1. Keadaan koprimaliti untuk m menghalang faktor sepunya antara m dan n, menghapuskan corak berkala dan perlanggaran.
Contoh Pelaksanaan untuk uint64
Untuk julat uint64, nilai parameter berikut boleh digunakan:
var ( m = uint64(39293) s = uint64(75321908) ) func transform(p uint64) uint64 { return p*m + s }
Sambungan kepada int64
Untuk nombor yang ditandatangani (int64), pendekatan yang serupa boleh digunakan. Transformasi asal untuk uint64 digunakan selepas menukar input dan output kepada dan dari uint64:
func signedTransform(p int64) int64 { return int64(transform(uint64(p))) }
Dengan menggunakan skema penjanaan nombor yang deterministik dan unik ini, ia menjadi mungkin untuk memetakan nombor input kepada output unik tanpa memerlukan tatasusunan atau pengisihan intensif memori.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Integer Deterministik dan Unik daripada Nombor Input?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!