Ejemplo n.º 1
0
long timeSelectionSort(
    std::size_t Size,
    std::uniform_int_distribution<IntType> &UniformIntDistribution_,
    std::default_random_engine DefaultRandomEngine_) {
  auto L = getRandomList(Size, UniformIntDistribution_, DefaultRandomEngine_);
  return timeAlgorithm([&]() -> void { L.selection_sort(); });
}
Ejemplo n.º 2
0
long
timeMergeSort(std::size_t Size,
              std::uniform_int_distribution<IntType> &UniformIntDistribution_,
              std::default_random_engine DefaultRandomEngine_) {
  auto L = getRandomList(Size, UniformIntDistribution_, DefaultRandomEngine_);
  return timeAlgorithm([&]() -> void { auto M = object_list::sort(L); });
}
Ejemplo n.º 3
0
long timeLinearSearch(
    std::size_t Size,
    std::uniform_int_distribution<IntType> &UniformIntDistribution_,
    std::default_random_engine DefaultRandomEngine_) {
  auto L = getRandomList(Size, UniformIntDistribution_, DefaultRandomEngine_);
  auto x = object_int(UniformIntDistribution_(DefaultRandomEngine_));
  return timeAlgorithm([&]() -> void { L.linear_search(x); });
}
Ejemplo n.º 4
0
long timeBinarySearch(
    std::size_t Size,
    std::uniform_int_distribution<IntType> &UniformIntDistribution_,
    std::default_random_engine DefaultRandomEngine_) {
  auto L = object_list::mergeSort(
      getRandomList(Size, UniformIntDistribution_, DefaultRandomEngine_));
  auto x = object_int(UniformIntDistribution_(DefaultRandomEngine_));
  return timeAlgorithm([&]() -> void {
    auto M = object_list::sort(L);
    M.search(x);
  });
}
Ejemplo n.º 5
0
long timeAmortizedBinarySearch(
    std::size_t Size,
    std::uniform_int_distribution<IntType> &UniformIntDistribution_,
    std::default_random_engine DefaultRandomEngine_, std::size_t Iterations) {
  auto L = getRandomList(Size, UniformIntDistribution_, DefaultRandomEngine_);
  return timeAlgorithm([&]() -> void {
    auto M = object_list::sort(L);

    for (; Iterations != 0; --Iterations) {
      M.search(object_int(UniformIntDistribution_(DefaultRandomEngine_)));
    }
  });
}
Ejemplo n.º 6
0
//刷新商店
int shopMgr::refresh(charShop& shop)
{
    assert(m_card_list.size() > 0);
    assert(m_mat_list.size() > 0);
    assert(m_equip_list.size() > 0);
    assert(m_baoshi_list.size() > 0);

    //cout<<"refresh card..."<<endl;
    //第一个变身卡
    shop.m_goods[0].canbuy = true;
    shop.m_goods[0].baseGoods = m_card_list[my_random(0, m_card_list.size()-1)];

    #ifdef JP_SERVER
    //第二个军粮
    shop.m_goods[1].canbuy = true;
    boost::mt19937& gen = muduo::ThreadLocalSingleton<boost::mt19937>::instance();
    boost::random::discrete_distribution<> dist(supply_goods_gailv);
    int idx = dist(gen);
    shop.m_goods[1].baseGoods = m_supply_list[idx];
    #else
    //第二个变身卡
    shop.m_goods[1].canbuy = true;
    shop.m_goods[1].baseGoods = m_card_list[my_random(0, m_card_list.size()-1)];
    while (shop.m_goods[0].baseGoods == shop.m_goods[1].baseGoods)
    {
        shop.m_goods[1].baseGoods = m_card_list[my_random(0, m_card_list.size()-1)];
    }
    #endif

    //cout<<"refresh equip..."<<endl;
    //第3格    绿色装备一件    随机
    shop.m_goods[2].canbuy = true;
    shop.m_goods[2].baseGoods = m_equip_list[my_random(0, m_equip_list.size()-1)];
    //
    //第4格    材料    随机
    //第5格    材料    随机
    //材料根据等级出
    shop.m_goods[3].canbuy = true;
    shop.m_goods[4].canbuy = true;
    std::vector<boost::shared_ptr<baseShopGoods> > m_tmp_list;        //材料列表
    if (shop.m_charData.m_level <= 50)
    {
        m_tmp_list.clear();
        //50级特殊处理,必出一蓝色
        getRandomList(shop.m_charData.m_level,m_tmp_list,2,2);
        shop.m_goods[3].baseGoods = m_tmp_list[my_random(0, m_tmp_list.size()-1)];
        m_tmp_list.clear();
        getRandomList(shop.m_charData.m_level,m_tmp_list);
        shop.m_goods[4].baseGoods = m_tmp_list[my_random(0, m_tmp_list.size()-1)];
        while (shop.m_goods[4].baseGoods == shop.m_goods[3].baseGoods)
        {
            shop.m_goods[4].baseGoods = m_tmp_list[my_random(0, m_tmp_list.size()-1)];
        }
    }
    else
    {
        m_tmp_list.clear();
        getRandomList(shop.m_charData.m_level,m_tmp_list);
        if (m_tmp_list.size() > 2)
        {
            shop.m_goods[3].baseGoods = m_tmp_list[my_random(0, m_tmp_list.size()-1)];
            shop.m_goods[4].baseGoods = m_tmp_list[my_random(0, m_tmp_list.size()-1)];
            while (shop.m_goods[4].baseGoods == shop.m_goods[3].baseGoods)
            {
                shop.m_goods[4].baseGoods = m_tmp_list[my_random(0, m_tmp_list.size()-1)];
            }
        }
    }

    //cout<<"refresh last..."<<endl;
    //第六
    shop.m_goods[5].canbuy = true;
    switch (my_random(1,15))
    {
        #ifndef JP_SERVER
        case 1:
            shop.m_goods[5].baseGoods = m_supply_goods;
            break;
        #endif
        default:
            shop.m_goods[5].baseGoods = m_baoshi_list[my_random(0, m_baoshi_list.size()-1)];
            break;
    }
    for (int pos = 1; pos <= 6; ++pos)
    {
        shop.Save(pos);
    }
    //shop.m_refresh_time = time(NULL);
    //shop.m_charData.setExtraData(char_data_type_normal, char_data_shop_refresh_time, shop.m_refresh_time);
    return HC_SUCCESS;
}