it-roy-ru.com

Случайное число: или 1

Я смотрю слишком далеко, чтобы увидеть что-то столь же простое, как выбрать число: 0 или 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 выбирает случайное целое число между нижней границей (включительно) и верхней границей (исключая).

72
JDunkerley

Если вы хотите вероятность 50/50, я предлагаю:

Random Rand = new Random();

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

Кажется, что то, что вы хотите сделать (выбрать между двумя значениями), более четко выражено с помощью метода Next вместо метода NextDouble .

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

Полученное значение «больше или равно нулю и меньше» ExclusiveUpperBound.

3
bdukes

Random.NextDouble() выберет любое двойное число от 0, но меньше 1,0. Большинство из этих чисел не равны нулю, поэтому ваше распределение будет не таким, как вы ожидаете.

2
Timbo

Очень простой подход может быть:

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

Затем используйте результат для вашей логики.

0
Alex Leo

Если бы не в тесной петле вы могли бы использовать

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