Utilisation simplifiée du hasard en .net

Contenu du snippet

Classe permettant de générer certaines valeurs de manière aléatoire

Calcul un nombre aléatoire entre 0 et Max
> int RandomWithMax(int max)

Calcul un nombre aléatoire entre Min et 0
> int RandomWithMin(int min)

Calcul un nombre aléatoire entre StartVal et StartVal+etendue
> int RandomWithLength(int startVal, int etendue)

Calcul un nombre aléatoire entre Min et Max
> int RandomMinMax(int min, int max)

Calcul une valeur aléatoire entre true et false
> bool RandomBool()

Source / Exemple :


using System;

namespace UtilityLib
{
    /// <summary>
    /// Classe permettant de générer certaines valeurs de manière aléatoire
    /// </summary>
    public static class Hasard
    {
        // Objet utilisé pour le random
        private static Random m_Random = new Random();

        /// <summary>
        /// Calcul un nombre aléatoire entre 0 et Max
        /// </summary>
        /// <param name="max">Maximum que peut atteindre le random</param>
        /// <returns>Retourne un nombre aléatoire entre 0 et Max, ou bien "max" si max n'est pas plus grand que 0</returns>
        public static int RandomWithMax(int max)
        {
            return max > 0 ? Hasard.m_Random.Next(max + 1) : max;
        }

        /// <summary>
        /// Calcul un nombre aléatoire entre Min et 0
        /// </summary>
        /// <param name="max">Minimum que peut atteindre le random (negatif)</param>
        /// <returns>Retourne un nombre aléatoire entre Min et 0, ou bien Min si min n'est pas plus petit que 0</returns>
        public static int RandomWithMin(int min)
        {
            return min < 0 ? -Hasard.m_Random.Next(-min + 1) : min;
        }

        /// <summary>
        /// Calcul un nombre aléatoire entre StartVal et StartVal+etendue
        /// </summary>
        /// <param name="startVal">Valeur de départ, l'une des bornes du random</param>
        /// <param name="etendue">Écart positif ou négatif entre les 2 bornes du random</param>
        /// <returns>Retourne un nombre aléatoire entre Min et Max</returns>
        public static int RandomWithLength(int startVal, int etendue)
        {
            if (etendue == 0)
                return etendue;
            else
                return startVal + etendue > 0 ? Hasard.m_Random.Next(etendue) : -Hasard.m_Random.Next(-etendue);
        }

        /// <summary>
        /// Calcul un nombre aléatoire entre Min et Max
        /// </summary>
        /// <param name="min">Borne inférieure du random</param>
        /// <param name="max">Borne supérieure du random</param>
        /// <returns>Retourne un nombre aléatoire entre Min et Max</returns>
        public static int RandomMinMax(int min, int max)
        {
            if (min == max)
                return min;
            int theMin = Math.Min(min, max);
            int theMax = Math.Max(min, max);
            return min + Hasard.m_Random.Next((max - min) + 1);
        }

        /// <summary>
        /// Calcul une valeur aléatoire entre true et false
        /// </summary>
        /// <returns>Retourne aléatoirement true ou false</returns>
        public static bool RandomBool()
        {
            return Hasard.m_Random.Next(2) == 0;
        }
    }
}

Conclusion :


Tout est static, il suffit d'avoir la classe au sein du projet.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.