mirror of
https://github.com/soypat/lneto.git
synced 2026-07-26 10:38:47 +00:00
66a1aec593
* begin adding better fuzz test * finish adding working fuzzer * implement mutateipv4 * fuzzer finds a panic in ICMP client on receive empty payload * rename fuzz tests to reflect fuzz methodology
28 lines
649 B
Go
28 lines
649 B
Go
package internal
|
|
|
|
// Prand16 generates a pseudo random number from a seed.
|
|
func Prand16(seed uint16) uint16 {
|
|
// 16bit Xorshift https://en.wikipedia.org/wiki/Xorshift
|
|
seed ^= seed << 7
|
|
seed ^= seed >> 9
|
|
seed ^= seed << 8
|
|
return seed
|
|
}
|
|
|
|
// Prand32 generates a pseudo random number from a seed.
|
|
func Prand32[T ~uint32](seed T) T {
|
|
/* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */
|
|
seed ^= seed << 13
|
|
seed ^= seed >> 17
|
|
seed ^= seed << 5
|
|
return seed
|
|
}
|
|
|
|
// Prand32 generates a pseudo random number from a seed.
|
|
func Prand64[T ~uint64 | ~int64](seed T) T {
|
|
seed ^= seed << 13
|
|
seed ^= seed >> 7
|
|
seed ^= seed << 17
|
|
return seed
|
|
}
|