package org.torch.util.random;
import java.io.Serializable;
import org.torch.util.random.RandomnessSource;
/**
* From DreamSpigotPlus project.
* @Link: https://github.com/DreamSpigotMC/DreamSpigotPlus/blob/master/PaperSpigot-Server-Patches/0024-DreamSpigotPlus-Use-a-Shared-LightRNG-for-Entities.patch
*/
/**
* This interface defines the interactions required of a random number
* generator. It is a replacement for Java's built-in Random because for
* improved performance.
*
* @author Eben Howard - http://squidpony.com - howard@squidpony.com
*/
public interface RandomnessSource extends Serializable {
/**
* Using this method, any algorithm that might use the built-in Java Random
* can interface with this randomness source.
*
* @param bits
* the number of bits to be returned
* @return the integer containing the appropriate number of bits
*/
int next(int bits);
/**
*
* Using this method, any algorithm that needs to efficiently generate more
* than 32 bits of random data can interface with this randomness source.
*
* Get a random long between Long.MIN_VALUE and Long.MAX_VALUE (both
* inclusive).
*
* @return a random long between Long.MIN_VALUE and Long.MAX_VALUE (both
* inclusive)
*/
long nextLong();
/**
* Produces a copy of this RandomnessSource that, if next() and/or
* nextLong() are called on this object and the copy, both will generate the
* same sequence of random numbers from the point copy() was called. This
* just need to copy the state so it isn't shared, usually, and produce a
* new value with the same exact state.
*
* @return a copy of this RandomnessSource
*/
RandomnessSource copy();
}