1. C++ / Говнокод #8544

    +998

    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
    private static int[] p = {
            151,160,137,91,90,15,
            131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,
            190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,
            88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,
            77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,
            102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,
            135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,
            5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,
            223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,
            129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,
            251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,
            49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,
            138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180};

    Заполнение массива случайными числами от 0 до 360

    Запостил: Torvald, 17 Ноября 2011

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

    • а для чего так?
      Где-то вызывается randomize, а нужны случайные числа, но одинаковые при каждом запуске? отлаживают что-то?
      Ответить
      • http://blog.wonderville.ru/perlin-noise-simplex-noise/
        Ответить
        • Ох ё,неужели это так важно, что такие простыни кода городят?
          Ответить
      • > нужны случайные числа, но одинаковые при каждом запуске
        для этого обычно используют srand
        Ответить
        • для такого заполнения генератор ПСП должен выдать 256 уникальных значений из [0..256) 256 раз подряд
          Ответить
          • можно перемешать массив в "случайном" порядке, "случайность" задаётся srand
            Ответить
            • а можно сразу закодировать таблицу замен вот таким образом
              я не уверен, но вроде как никто не даст гарантий, что алгоритм rand будет одинаковым в библиотеках разных компиляторов
              There is no standard meaning for a particular seed value; the same seed, used in different C libraries or on different CPU types, will give you different random numbers.
              Ответить
              • ну и чтобы два раза не вставать
                In many cases, the S-Boxes are carefully chosen to resist cryptanalysis.
                может тут такие же требования
                Ответить
              • Согласен, решение в топике вполне приемлемо в данной ситуации.
                Ответить
              • не уверен - напиши псевдогенератор сам, там три строчки кода. Однако в данном случае (шум Перлина) сойдет и обычный srand
                Ответить
                • ты меня вынудил почитать про шум Перлина
                  и что же я вижу?
                  педивикия:
                  It is also frequently used to generate textures when memory is extremely limited, such as in demos, and is increasingly finding use in Graphics Processing Units for real-time graphics in computer games
                  т.е. на практике не брезгуют числодробительные операции отдать быстрой видеокарте
                  копаем дальше
                  http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter26.html
                  и обожемой! они тоже используют таблицу замен, вместо генерации её срандом! и более того, ТУ ЖЕ САМУЮ ТАБЛИЦУ
                  Ответить
        • автор кода либо не использует, либо у него что-то косячило конкретно на таких цифрах. вот и смотрим.
          Ответить
    • А чё, на КРЕСТОШАБЛОНАХ константный массив случайными числами заполнить нельзя?
      Ответить
      • Чтобы повыёбываться?
        Ответить
      • на крестошаблонах крестоконстантный крестомассив крестослучайными кресточислами
        Ответить
      • тут должен был быть пример на языке Ада
        Ответить
        • p: constant Int_Arr := GetManyRandomNumbers(360,360);
          Правда, бесплатный компилятор переносит все вычисления в старт программы, а не во время компиляции.
          Ответить
          • это библиотечная функция?
            а то гугл пишет Не найдено результатов по запросу "ada GetManyRandomNumbers"
            Ответить
          • а варезный?
            Ответить
          • Ух ты. Ада рулит. Хочу там пописать.
            constexpr С++ сливает.
            Ответить
            • http://libre.adacore.com/libre/download/

              > constexpr С++ сливает.

              Ну, он зато 100% гарантирует вычисления при компиляции. Говорят, что это иногда (в 1% случаев) очень важно.
              Ответить
              • >Говорят, что это иногда (в 1% случаев) очень важно.
                Почему это важно? Чтобы компиляция длилась 100500 лет?
                Ответить
                • купи себе уже нормальный компьютер, нищеброд
                  1 хороший компьютер у разработчика + миллион слабых у потребителей лучше, чем 1 слабый у разработчика + ебанутые системные требования к пользователю
                  Ответить
                  • Ты думаешь, что если что-то не считается во время компиляции, то оно считается у пользователя? Все с тобой ясно. Кроме compiletime и runtime возможны другие этапы. Пользуйся ими.
                    Ответить
                    • я думаю, что другие этапы, не упомянутые тобой, не всегда заменяют собой выбор между compile-time и run-time, и, очевидно, время компиляции в С++ тебя печалит (как и потребление ресурсов во время оной)
                      в 2011 году есть много способов сократить время компиляции и её нагрузку на машину, трудоемкая компиляция - цена за быстродействие конечного продукта
                      или переходи на аду, там нет крестопроблем, заодно будешь выдавливать тараса из его кормовой ниши
                      Ответить
              • Спасибо, за аду.
                Ответить
      • на ум в С++ приходит разве что наркоманский путь следующего вида
        написать класс, который бы при вызове random<5, const_seed>::value выдавал 5й элемент говнослучайной последовательности (заставил бы компилятор сделать шаблоны для 4, 3, 2, 1 и 0 члена в compile-time)
        затем инициализировать говномассив говнообразом:
        int p[] = { random<0,666>::value, random<1,666>::value, random<2,666>::value ... };
        должно получиться
        способа, чтобы в компайл-тайм сделать int p[] = random_array<int, 0, 100, 666>::generate(); я пока не могу предложить

        но всегда можно сделать инициализацию при старте программы, используя
        std::vector<int> a = generate_my_random_array(100, 666);
        т.е. то, что ты и сам в аде написал про бесплатный компилятор
        Ответить
    • Где здесь C++?
      Ответить
    • До 255.
      Ответить
    • Linus Torvalds, не отличаешь свободный C++ от проприетарного C#?
      Ответить
    • За что минусуют? Если это не гавнокод, то заполните пожалуйста массив длиной 10 000 таким же способом.
      Где то уже звучало, что в таких ситуациях массив сначала заполняется по порядку, а потом перемешивается.
      Ответить
      • А для чего используется этот массив? Если для тестирования какого-то алгоритма, и потом результат сравнивают с известным ответом, то это правильно.
        Ответить
    • показать все, что скрытокод говно, автар мудак
      Ответить
    • Где здесь С++?
      Ответить
    • показать все, что скрытоvanished
      Ответить

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