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(); }); }
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); }); }
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); }); }
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); }); }
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_))); } }); }
//刷新商店 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; }