c# - una - Número aleatorio: 0 o 1
propiedad random c# (6)
¿Estoy mirando demasiado lejos para ver algo tan simple como elegir un número: 0 o 1?
Random rand = new Random();
if (rand.NextDouble() == 0)
{
lnkEvents.CssClass = "selected";
}
else
{
lnkNews.CssClass = "selected";
}
Parece que lo que quieres hacer (elegir entre dos valores) se expresa más claramente usando el método Next
, en lugar del método NextDouble
.
const int ExclusiveUpperBound = 2;
if (new Random().Next(ExclusiveUpperBound) == 0)
El valor producido es "mayor o igual a cero, y menor que" ExclusiveUpperBound
.
Si no está en un bucle estrecho, podría usar
(DateTime.Now.Millisecond % 2) - double DateTime.Now.Millisecond % (double) 10) / 10
Si quieres 50/50 de probabilidad, te sugiero:
Random rand = new Random();
if (rand.NextDouble() >= 0.5)
lnkEvents.CssClass = "selected";
else
lnkNews.CssClass = "selected";
Un enfoque muy simple podría ser:
Random random = new Random();
bool result = random.Next(0, 2) != 0;
Luego usa el resultado para tu lógica.
Random.NextDouble()
seleccionará cualquier número doble de 0 pero menos de 1.0. La mayoría de estos números no son cero, por lo que su distribución no será tan uniforme como espera.
Random rand = new Random();
if (rand.Next(0, 2) == 0)
lnkEvents.CssClass = "selected";
else
lnkNews.CssClass = "selected";
Random.Next selecciona un entero aleatorio entre el límite inferior (incluido) y el límite superior (exclusivo).