Files
Pat Whittingslow 66a1aec593 Add fuzz tests, rename fuzz tests and fix panic found by fuzzing (#72)
* 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
2026-04-11 11:09:51 -03:00

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
}