void Zipf::CreateZipfList(vector<int> &filelist) { vector<double> probability; CreateZipfDistribution(probability); filelist.clear(); for(int i = 0; i < m_clientnum; ++i) { double temp = Randomf(0, 1); double sum = 0.0; for(int j = m_resourcenum - 1; j >= 0 ; --j) { sum += probability.at(j); if (sum > temp) { filelist.push_back(i); break; } } } }
ModelAssemble::ModelAssemble(int fileNum,double thelta,double lambda, double backZeta,double backSigma,double forZeta,double forSigma,int maxClientNum, int playToPlay,int playToPause,int playToForward,int playToBackward, int playToStop,bool isStartTogether,int hotPlaceNums){ mIsStartTogether = isStartTogether; mFileNum = fileNum; mThelta = thelta / 1000.0; mLambda = lambda / 1000.0; mBackZeta = backZeta / 1000.0; mBackSigma = backSigma / 1000.0; mForZeta = forZeta / 1000.0; mForSigma = forSigma / 1000.0; mHotPlaceNums = hotPlaceNums; mMaxClientNum = maxClientNum; MMBlock tmpBlock; tmpBlock.status = PLAY; tmpBlock.prob = playToPlay; mMMVect.push_back(tmpBlock); tmpBlock.status = PAUSE; tmpBlock.prob = playToPause; mMMVect.push_back(tmpBlock); tmpBlock.status = FORWARD; tmpBlock.prob = playToForward; mMMVect.push_back(tmpBlock); tmpBlock.status = BACKWARD; tmpBlock.prob = playToBackward; mMMVect.push_back(tmpBlock); tmpBlock.status = STOP; tmpBlock.prob = playToStop; mMMVect.push_back(tmpBlock); GslInit(); CreateStartTime(); CreateZipfDistribution(); // LOG_INFO("mMaxClientNum = " << mMaxClientNum); }