• Что означает time при использовании этого класса?

    Nipheris
    @Nipheris Куратор тега C++
    mersenne_twister_engine - вот сам класс mt19937 (сейчас он уже в std есть, так что не факт что буст используется), вот его конструктор: mersenne_twister_engine/mersenne_twister_engine, вот что пишут про его единственный параметр:
    > value - seed value to use in the initialization of the internal state
    Т.е. это зерно для вашего рандом-генератора. Как часто это делается в задачах, не требующих высокого уровня безопасности, зерном берется текущее время.
    А вот собственно функция time. Она принимает один параметр - указатель на time_t, и возвращает также time_t. В любом случае она вернет текущее время, если же вы в кач. первого параметра передадите ненулевой указатель, то она еще и по нему запишет текущее время. В вашем примере передается NULL, т.к. используется возвращаемое значение.
    А вот это - uniform_int_distribution - класс равномерного распределения случайной величины. Скорее всего дальше по коду он используется вместе с рандом-генератором для получения значений случайной величины, удовлетворяющих этому равномерному распределению.
    Ответ написан
    Комментировать
  • Какие есть алгоритмы для выдачи результата из заданого списка с определенной вероятностью?

    bobrovskyserg
    @bobrovskyserg
    Самая сложная математика:
    на оси x откладываете отрезки:
    [0.0 .. 0.2) - Вася
    [0.2 .. 0.5) - Петя
    [0.5 .. 1.0) - Кузя
    Генерите random в диапазоне 0 .. 1
    На чей отрезок выпало - тому и водить.
    Код на Питоне:
    from random import random
    from bisect import bisect_left
    
    data = {"Вася": 2,
            "Петя": 3,
            "Кузя": 5}
    
    scalefactor = sum(data.values())
    names, scale = [], [0.]
    for name, weight in data.items():
        names.append(name)
        scale.append(scale[-1] + weight / scalefactor)
    
    #  посмотрим, хорошо ли работает
    counter = {name: 0 for name in names}
    
    for i in range(10000):
        x = random()
        idx = bisect_left(scale, x) - 1
        name = names[idx]
        counter[name] += 1
    print(counter)
    Ответ написан
    4 комментария
  • Как сделать так, чтобы main() возвратила double?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Вам хочется странного. Код возврата из приложения -- целое число, это жёстко закодировано во многих местах ОС. В POSIX это часть стандарта. В C и C++ это часть стандарта.
    Ответ написан
    3 комментария
  • Как вернуть копию объекта?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    За тело конструктора в объявлении конструктора надо съездить автору линейкой по пальцам. Или это C#?

    int для индексов объектов - лажа, нужно использовать size_t. Учебники, в которых авторы по привычке лепят int куда ни попадя - жарить в духовке до готовности. Температура - 451 по Фаренгейту.

    Object getMeAnyObject(int i) - такая же лажа, нужно определить константный и неконстантый операторы индекса [].

    В целом, попытка использовать list вместо vector - лажа.

    По факту - с чего вы вообще взяли, что тут будет какая-то ссылка? Делая присваивание, вы выполняете копирование.

    Ах да, еще одна Лажа Петровна:
    Object o;
      o = oc.getMeAnyObject(1);

    Это ведь i like to move it move it! (два вызова - конструктор и присваивание) форменное. Как насчет
    Object o=oc.getMeAnyObject(9000)? Это ведь даже сподвигнет компилятор на RVO и вообще выкинет одно из копирований.
    Ответ написан
  • Как правильно замерять используемую память(Windows)?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Первая странность - reserve, а сразу потом - resize. Достаточно только resize(). Кроме этого, у resize есть второй параметр, специально для заполнения вновь создаваемых элементов. Вместо
    vec.reserve(N);
      vec.resize(N);
      for(int i=0;i<N;++i)
      {
        vec[i]=10;
      }

    Можно было написать ровно один вызов resize().
    Второе - не следует забывать, что с точки зрения ОС, единица отдачи памяти приложению - страница, а страница это обычно 4 килобайта.
    Ответ написан
    7 комментариев
  • Как настроить фокус при съемке фотоаппаратом?

    shornikov
    @shornikov
    Полиграфия, электронные книги, php, js, html
    Диафрагму прикройте, глубина резкости будет больше. Т.е. выставляемое число должно стать больше. Ну и света придется добавить.
    Ответ написан
    1 комментарий
  • Как работать со статическими ссылками в C++?

    Adamos
    @Adamos
    Лучше переделайте на такой вариант:
    static QSqlDatabase* getPDB()
    {
      static QSqlDatabase *pdb = NULL;
      if(pdb == NULL) {
        pdb = connect();
      }
      return pdb;
    }

    Ну, соответственно, connect должно создавать это самое соединение и возвращать тот самый указатель.
    И никаких глобальных членов класса...
    Ответ написан
    3 комментария
  • Почему изменение кармы без пояснения причины?

    charon
    @charon
    я для себя этот вопрос решил давно. Человек, как известно, в основе своей зло. Сделать западло среднестатистичному человеку намного приятнее, чем добро. А если анонимно — то это ж вообще за милую душу. Именно поэтому нет ни одного хотя бы средних размеров сообщества, где обходятся без регулирующих функций (полиция, учитель, гуру,...).
    Так что я не напрягаюсь и спокойно отношусь к своим минусам. Конечно, я ничего не смогу написать — но от этого хуже Хабру, а не мне (ИМХО).
    Ответ написан
    1 комментарий