Beri bash i ebash / Говнокод #26048 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 groser, (Updated )

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

  • Переведи на "PHP". Мы не обязаны знать язык для прыщеблядей.
    Ответить
    • $FLOOR=200
      
      $number=0   # инициализация
      while ( $number < $FLOOR ) {
        $number=$RANDOM;
      }
      echo "Случайное число, большее $FLOOR ---  $number"
      Ответить
      • Обратитесь к системному администртору
        Ответить
  • Ну, в общем-то, это правильный способ который не портит распределение. Только обычно границу ставят не на max_out, а на max_out * floor(max_rnd/max_out) чтобы отбрасываемых чисел поменьше было.
    Ответить
    • З.Ы. А, тьфу, тут снизу ограничивают а не сверху. Ну тож сойдёт для небольших значений floor. По крайней мере распределение не портит.
      Ответить
  • а нельзя просто умножить на N так, N*min_rnd == low_treshold ?
    Ответить
    • Если умножить на 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.
      Ответить
      • генератор много где питухов выдает
        Ответить
        • Но далеко не везде генератор выдаёт только питухов из [0; 1). Я, собственно, только «JS» из таких языков и знаю.
          Ответить
          • У меня есть смутное воспоминание, что в каком-то говноязыке я вынужед был умножать питуха на 100 и круглить, чтобы получить нужное мне целое.
            Ответить
  • >$RANDOM
    Фу, какой башизм. Именно поэтому я за
    expr $(od -An -N2 -tu2 /dev/urandom) / 2
    Ответить
    • >/dev/urandom
      фу, какой прыщизм

      в POSIX / SUS никаких "/dev/urandom" нет
      Ведь нет же?
      Ответить
      • 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» ничего такого нет, для получения (псевдо)случайного числа нужно вызывать отдельную функцию.
        Ответить
        • Сиречь в прыще один блочит, когда не хватает энтропии, а второй лукавит, и пхает хуйню.
          А в бзде всегда всё блочится.
          Так?
          Ответить
          • Выходит, что так.

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

            https://pastebin.com/A07q3nL3

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

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

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8