1. bash / Говнокод #26048

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    # Если вы желаете ограничить диапазон "снизу",
    # то просто производите генерацию псевдослучайных чисел в цикле до тех пор,
    # пока не получите число большее нижней границы.
    
    FLOOR=200
    
    number=0   # инициализация
    while [ "$number" -le $FLOOR ]
    do
      number=$RANDOM
    done
    echo "Случайное число, большее $FLOOR ---  $number"

    https://www.opennet.ru/docs/RUS/bash_scripting_guide/x4812.html

    Запостил: groser, 26 Ноября 2019

    Комментарии (24) RSS

    • Переведи на "PHP". Мы не обязаны знать язык для прыщеблядей.
      Ответить
    • Ну, в общем-то, это правильный способ который не портит распределение. Только обычно границу ставят не на max_out, а на max_out * floor(max_rnd/max_out) чтобы отбрасываемых чисел поменьше было.
      Ответить
      • З.Ы. А, тьфу, тут снизу ограничивают а не сверху. Ну тож сойдёт для небольших значений floor. По крайней мере распределение не портит.
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • Если умножить на N, то у тебя вместо непрерывного промежутка генерируемых значений будет решето.

        Лучше прибавить, а не умножить.

        В любом случае придётся ещё отсекать верхние значения...
        Ответить
      • Пример: генератор выдаёт целые числа из диапазона [1..10] = [1,2,3,4,5,6,7,8,9,10].
        Умножаешь на два, чтобы получить числа не меньше 2. Получаешь: [2,4,6,8,10,12,14,16,18,20]. Нечётные числа твой генератор не выдаст.
        Ответить
      • Так принято в «JS», но там генератор выдаёт плавающих питухов из [0; 1) и умножение на N работает. Ну и min_rnd обычно равне 0.
        Ответить
    • >$RANDOM
      Фу, какой башизм. Именно поэтому я за
      expr $(od -An -N2 -tu2 /dev/urandom) / 2
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • macOS (имеется в виду OSX, а не Classic, конечно же) uses 160-bit Yarrow based on SHA1. There is no difference between /dev/random and /dev/urandom; both behave identically.

          The FreeBSD operating system provides /dev/urandom for compatibility but the behavior is very different from that of Linux. On FreeBSD, /dev/urandom is just a link to /dev/random and blocks only until properly seeded.

          /dev/random and /dev/urandom are also available on Solaris, NetBSD, Tru64 UNIX 5.1B, AIX 5.2 and HP-UX 11i v2.

          В любом случае это прыщеблядство. В «Windows» ничего такого нет, для получения (псевдо)случайного числа нужно вызывать отдельную функцию.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • Выходит, что так.

              Видел срач по поводу использования ГСЧ, встроенного в новые процессоры? Линус разрешил использовать процессорный ГСЧ, когда не хватает прыщеэнтропии, а его оппоненты говорят, что так нельзя, что в процессорах закладки АНБ, ФБР и ЦРУ, все следят.

              https://pastebin.com/A07q3nL3

              Долистай до самого конца и прочитай диалог SIMPLICIO и SALVIATI.

              SALVIATI говорит, что с процессорным ГСЧ ксорить даже псевдослучайные числа нельзя. А вдруг АНБ извлечёт из кэша наши псевдослучайные числа и отдаст их процессорному ГСЧ, чтобы после нашего ксора получился ноль?
              Ответить
              • > ксорить
                Дык надо не ксорить, а подмешивать в сид ГПСЧ криптостойким хешем. Что, в общем-то, все и делают.
                Ответить
    • ебать нужно так!
      while true;
      $rnd = $floor = $random;
      Ответить

    Добавить комментарий