На самом деле, когда вы думаете об этом, rand() * rand()
является меньше случайным, чем rand()
.Вот почему.
По существу, число нечетных чисел равно количеству четных чисел.И говоря, что 0,04325 является нечетным, а 0,388 четным, а 0,4 четным и 0,15 нечетным,
Это означает, что rand()
имеет равный равный шанс быть четным или нечетным десятичным знаком .
С другой стороны, у rand() * rand()
шансы сложены несколько иначе.Скажем:
double a = rand();
double b = rand();
double c = a * b;
a
и b
оба имеют 50% вероятности того, что они будут четными или нечетными.Зная, что
- четные * четные = четные
- четные * нечетные = четные
- нечетные * нечетные = нечетные
- нечетные * четные = четные
означает, что есть 75% -ый шанс , что c
является четным, в то время как только 25% -ый шанс это нечетно, делая значение rand() * rand()
более предсказуемо, чем rand()
, поэтому менее случайно.