Vector<T> CDFTools<T>::percentile( const vector<const Vector<T>*>& x, const Vector<T>& xEvals, const float percent) const { Matrix<T> matrix; Vectorf percents( 1 ); percents[0] = percent; matrix = percentiles( x, xEvals, percents ); return matrix[0]; /* const int numSamples = x.size(); const int numEvals = xEvals.getSize(); Matrix<T> matrix( numEvals, numSamples ); Vector<T> y( numEvals ); for (int i = 0; i < numSamples; i++) { matrix.setColumn( i, cdf(*x[i],xEvals) ); } for (int j = 0; j < numEvals; j++) { matrix[j].sort(); y[j] = matrix[j].percentile( percent ); } return y;*/ }
u8 Skill::Primary::LevelUp(u8 race, u8 level) { Rand::Queue percents(MAXPRIMARYSKILL); const skillstats_t* ptr = GetSkillStats(race); if(ptr) { if(ptr->over_level > level) { percents.Push(ATTACK, ptr->mature_primary_under.attack); percents.Push(DEFENSE, ptr->mature_primary_under.defense); percents.Push(POWER, ptr->mature_primary_under.power); percents.Push(KNOWLEDGE, ptr->mature_primary_under.knowledge); } else { percents.Push(ATTACK, ptr->mature_primary_over.attack); percents.Push(DEFENSE, ptr->mature_primary_over.defense); percents.Push(POWER, ptr->mature_primary_over.power); percents.Push(KNOWLEDGE, ptr->mature_primary_over.knowledge); } } u8 result = percents.Size() ? percents.Get() : UNKNOWN; switch(result) { case ATTACK: ++attack; break; case DEFENSE: ++defense; break; case POWER: ++power; break; case KNOWLEDGE: ++knowledge; break; default: break; } return result; }