# [−][src]Crate rand_xoshiro

This crate implements the xoshiro family of pseudorandom number generators designed by David Blackman and Sebastiano Vigna. They feature high perfomance and a small state and superseed the previous xorshift-based generators. However, they are no cryptographically secure and their output can be predicted by observing a few samples.

The following generators are implemented:

# 64-bit generators

`Xoshiro256StarStar`

: Recommended for all purposes. Excellent speed and a state space (256 bits) large enough for any parallel application.`Xoshiro256Plus`

: Recommended for generating 64-bit floating-point numbers. About 15% faster than`Xoshiro256StarStar`

, but has a low linear complexity in the lowest bits (which are discarded when generating floats), making it fail linearity tests. This is unlikely to have any impact in practise.`Xoroshiro128StarStar`

: An alternative to`Xoshiro256StarStar`

, having the same speed but using half the state. Only suited for low-scale parallel applications.`Xoroshiro128Plus`

: An alternative to`Xoshiro256Plus`

, having the same speed but using half the state. Only suited for low-scale parallel applications. Has a low linear complexity in the lowest bits (which are discarded when generating floats), making it fail linearity tests. This is unlikely to have any impact in practise.`Xoshiro512StarStar`

: An alternative to`Xoshiro256StarStar`

with more state and the same speed.`Xoshiro512Plus`

: An alternative to`Xoshiro512Plus`

with more state and the same speed. Has a low linear complexity in the lowest bits (which are discarded when generating floats), making it fail linearity tests. This is unlikely to have any impact in practise.`SplitMix64`

: Recommended for initializing generators of the xoshiro familiy from a 64-bit seed. Used for implementing`seed_from_u64`

.

# 32-bit generators

`Xoshiro128StarStar`

: Recommended for all purposes. Excellent speed.`Xoshiro128Plus`

: Recommended for generating 32-bit floating-point numbers. Faster than`Xoshiro128StarStar`

, but has a low linear complexity in the lowest bits (which are discarded when generating floats), making it fail linearity tests. This is unlikely to have any impact in practise.`Xoroshiro64StarStar`

: An alternative to`Xoshiro128StarStar`

, having the same speed but using half the state.`Xoroshiro64Star`

: An alternative to`Xoshiro128Plus`

, having the same speed but using half the state. Has a low linear complexity in the lowest bits (which are discarded when generating floats), making it fail linearity tests. This is unlikely to have any impact in practise.

## Structs

Seed512 | 512-bit seed for a generator. |

SplitMix64 | A splitmix64 random number generator. |

Xoroshiro64StarStar | A Xoroshiro64** random number generator. |

Xoroshiro64Star | A xoroshiro64* random number generator. |

Xoroshiro128Plus | A xoroshiro128+ random number generator. |

Xoroshiro128StarStar | A xoroshiro128** random number generator. |

Xoshiro128StarStar | A xoshiro128** random number generator. |

Xoshiro128Plus | A xoshiro128+ random number generator. |

Xoshiro256StarStar | A xoshiro256** random number generator. |

Xoshiro256Plus | A xoshiro256+ random number generator. |

Xoshiro512StarStar | A xoshiro512** random number generator. |

Xoshiro512Plus | A xoshiro512+ random number generator. |