Это не тривиально при использовании rand()
, поскольку линейный конгруэнтный генератор обычно чередуется между нечетными и четными числами.
Итак, одна из худших вещей, которую вы можете сделать, это использовать формулуна основе rand() % 2
.
В этом конкретном случае я предлагаю вам нарисовать на основе
n = rand();
и назвать его 1
, если n < RAND_MAX / 2
и 3
иначе, что вы можете сделать с
rand() < RAND_MAX / 2 ? 1 : 3
Это может иметь адекватные статистические свойства - возможно, некоторую нежелательную автокорреляцию - но, вероятно, не хуже, чем сам rand()
.