web-dev-qa-db-fra.com

Nombre aléatoire: ou 1

Est-ce que je cherche trop loin pour voir quelque chose d'aussi simple que de choisir un nombre: 0 ou 1?

        Random Rand = new Random();

        if (Rand.NextDouble() == 0)
        {
            lnkEvents.CssClass = "selected";
        }
        else
        {
            lnkNews.CssClass = "selected";
        }
23
Rickjaah
Random Rand = new Random();

if (Rand.Next(0, 2) == 0)
    lnkEvents.CssClass = "selected";
else
    lnkNews.CssClass = "selected";

Random.Next choisit un entier aléatoire entre la limite inférieure (incluse) et la limite supérieure (exclusive).

72
JDunkerley

Si vous voulez une probabilité de 50/50, je suggère:

Random Rand = new Random();

if (Rand.NextDouble() >= 0.5)
    lnkEvents.CssClass = "selected";
else
    lnkNews.CssClass = "selected";
26
Mitch Wheat

Il semble que ce que vous voulez faire (choisir entre deux valeurs) s’exprime plus clairement en utilisant la méthode Next , au lieu de la méthode NextDouble .

const int ExclusiveUpperBound = 2;
if (new Random().Next(ExclusiveUpperBound) == 0)

La valeur produite est "supérieure ou égale à zéro et inférieure à" ExclusiveUpperBound.

3
bdukes

Random.NextDouble() sélectionnera tout nombre double compris entre 0 et moins de 1.0. Comme la plupart de ces nombres ne sont pas nuls, votre distribution ne sera pas aussi régulière que vous le souhaiteriez.

2
Timbo

Une approche très simple pourrait être:

Random random = new Random();
bool result = random.Next(0, 2) != 0;

Ensuite, utilisez le résultat pour votre logique.

0
Alex Leo

Sinon, vous pourriez utiliser

(DateTime.Now.Millisecond % 2) - double DateTime.Now.Millisecond % (double) 10) / 10
0
Knut dørum