﻿namespace AsmodeeDigital.Common.Plugin.Manager.Random
{
    /// <summary>
    /// Abstract model of a random number generator
    /// </summary>
    public interface IRandomManager
    {
        /// <summary>
        /// Get the seed of the random number generator
        /// </summary>
        /// <returns>Seed</returns>
        int GetSeed();

        /// <summary>
        /// Set the seed of the random number generator
        /// </summary>
        /// <param name="seed">Seed</param>
        void SetSeed(int seed);

        /// <summary>
        /// Get random value in [0;1[ range
        /// </summary>
        /// <returns>Random value in [0;1[ range</returns>
        float GetValue();

        /// <summary>
        /// Get random value in [min;max[ range
        /// </summary>
        /// <param name="min">Minimum value (included)</param>
        /// <param name="max">Maximum value (excluded)</param>
        /// <returns>Random value in [min;max[ range</returns>
        int GetValue(int min, int max);
    }
}
