Ошибки заборного столба (fencepost errors), часть III

Раннее.

А вот еще примеры полу-закрытых или полу-открытых интвервалов.

Эти ф-ции генерируют число между 0 и 0.99999...., но не 1:

     The drand48() and erand48() functions shall return non-negative,
     double-precision, floating-point values, uniformly distributed over
     the interval [0.0,1.0).

Кстати, так обычно и бывает --- если ГПСЧ и генерирует вещественные числа, то в этом интервале, не выдавая никогда 1.

А эта, между 0 и 0x7fffffff (младшие 31 бит случайные), но 2^31 (0x80000000) не будет генерироваться:

     The lrand48() and nrand48() functions shall return non-negative,
     long integers, uniformly distributed over the interval [0,2^31).

Можно проще сказать: эта ф-ция генерирует 32 случайных бита, в т.ч., сам знак тоже случаен. Однако, 2^31=0x80000000 это отрицательное число в two's complement, поэтому интервал выглядит так запутанно:

     The mrand48() and jrand48() functions shall return signed long
     integers uniformly distributed over the interval [-2^31,2^31).

(the post first published at 20250605.)


List of my other blog posts.

Subscribe to my news feed,

Когда-то (перед 24-марта-2025) тут для комментов был скрипт на JS --- Disqus. Я его убрал --- он был слишком пёстрый, отвлекающий, анимированный, и слишком много рекламы там было. Никогда его не любил. Также, комменты не всегда появлялись (Disqus был глючный). Также, блог у меня слишком камерный --- не очень-то много людей мне тут пишут комменты. Так что я решил переключиться на модель что у меня уже была по крайней мере в 2020 --- присылаете мне комменты емейлом на blog at yurichev dot com (и не забудьте указать URL на этот пост в блоге) и я их сюда копи-пащу вручную и может быть отвечу.

Будем тусить так, будто бы сейчас ~1993-1996, в этом радикальном и бескомпромисно-примитивном блоге и сайте, в том стиле что был еще перед web1.0.