使用“随机”奇数 64 位整数 seed
将 64 位整数 key
映射到仅具有 nbits
位的无符号整数值,其中 nbits
小于 64。 (规范)
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
integer(kind=int64), | intent(in) | :: | key | |||
integer(kind=int64), | intent(in) | :: | seed | |||
integer, | intent(in) | :: | nbits |
elemental function universal_mult_hash( key, seed, nbits ) result( sample ) !! Version: experimental !! !! Uses the "random" odd 64 bit integer `seed` to map the 64 bit integer `key` to !! an unsigned integer value with only `nbits` bits where `nbits` is less than 64. !! ([Specification](../page/specs/stdlib_hash_procedures.html#universal_mult_hash-maps-an-integer-to-a-smaller-number-of-bits_1)) integer(int64), intent(in) :: key integer(int64), intent(in) :: seed integer, intent(in) :: nbits integer(int64) :: sample sample = ishft( key*seed, -64 + nbits ) end function universal_mult_hash