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

    −165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    #!/bin/bash
    
    # This function can be redefined to use any
    # source of random
    function get_random() {
        echo $RANDOM;
    }
    
    function debug() {
        local str="$*"
    
        printf "\e[s\e[0;0H$str\e[u"
    }
    
    # Set limit for iterations, if given
    if [ $# -ge 1 ] && grep -q '^[[:digit:]]\+$' <<< $1 ; then
        LIMIT=$1
    fi
    
    # Previous random value
    PREV=$(get_random)
    # Current state
    STATE="none"
    
    printf "Analyzing random:"
    # Main loop
    while [ "x$LIMIT" = "x" ] || [ "$LIMIT" -gt "0" ]; do
        RND=$(get_random)
    
        debug random is $RANDOM
    
        if [ $RND -gt $PREV ]; then
            [ $STATE = "inc" ] && printf "|" || printf "\ninc |"
            STATE="inc"
        else
            [ $STATE = "dec" ] && printf "|" || printf "\ndec |"
            STATE="dec"
        fi #> /dev/null
    
        [ -n "$LIMIT" ] && let "LIMIT = $LIMIT - 1"
        sleep 1
    done
    printf '\nExtiting\n'

    Не помню уже зачем я это написал. Искал закладки АНБ в баше?

    // Хотя у меня на тазике прослеживается аддитивно-мультипликативный метод генерации псевдо-рандома.

    Запостил: Elvenfighter, 01 Января 2014

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

    • А еще -- только заметил 30-ю строчку :)
      Ответить
    • #!/bin/perd
      Ответить
    • знатокам баша: почему вместо [ -n "$LIMIT" ] пишут [ "x$LIMIT" = "x" ] ?
      Ответить
      • Совместимость с каким-то говном мамонта, в котором не было -n, видимо...
        Ответить
      • [ это же внешний экзешник, правильно?
        Ответить
        • И да и нет. Экзешник такой есть, но пирфоманса ради шеллы его не вызывают, а обрабатывают [ сами.
          Ответить
          • > Noire (ノワール Nowāru?), is the CPU who presides over Lastation.
            > During the story, Black Heart is encountered numerous times just to fight Neptune. After one of these fights, Black Heart is too exhausted to stay in her HDD form and reverts back to her human form.
            Где ты такую упоротую аватарку нашел и про что аниме?
            Ответить
            • > аниме
              Это из игры, на самом деле. А одноимённое аниме - сплошной фансервис для фанов оной.
              Ответить
    • > Искал закладки АНБ в баше?
      Ну башевский рандом вроде бы никогда не претендовал на криптостойкость... Да и на статистические свойства тоже... Равно как и сишный... /dev/[u]random - вот там другое дело.

      Ну а тест на равномерность возрастаний-убываний, имхо, пройдет любой генератор, даже самый тупой. Есть куча ГПСЧ, которые проходят diehard, но при этом не считаются криптостойкими ;)
      Ответить
    • Иди рассольчика залей, отпустит
      Ответить

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