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

Магическое число также может быть числом со специальной, жестко закодированной семантикой. Например, я когда-то видел систему, в которой идентификаторы записей> 0 обрабатывались нормально, 0 сама была «новой записью», -1 была «это корень», а -99 была «это было создано в корне». 0 и -99 приведет к тому, что WebService будет предоставлять новый идентификатор.

Что плохого в этом, так это то, что вы повторно используете пространство (значение целых чисел для идентификаторов записей) для специальных способностей. Возможно, вы никогда не захотите создать запись с идентификатором 0 или с отрицательным идентификатором, но даже если это не так, каждый человек, который смотрит либо на код, либо на базу данных, может наткнуться на это и сначала запутаться. Разумеется, 22, 7, -12 и 620 также считаются магическими числами.

. ; -)

25
задан bdukes 29 September 2009 в 15:00
поделиться

4 ответа

Random rand = new Random();

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

Random.Next выбирает случайное целое число между нижней границей (включительно) и верхней границей (исключая).

74
ответ дан Will 15 October 2019 в 14:48
поделиться

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

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

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

3
ответ дан bdukes 15 October 2019 в 14:48
поделиться

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

Random rand = new Random();

if (rand.NextDouble() >= 0.5)
    lnkEvents.CssClass = "selected";
else
    lnkNews.CssClass = "selected";
27
ответ дан 28 November 2019 в 17:39
поделиться

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

2
ответ дан 28 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: