譜面難易度とPP計算方法
難易度 (Rating)
※計算方法は見直し変更される可能性があります。
KPMの算出
コード各行のローマ字KPM(Keys Per Minute)を計算します。1700 KPMを超える行は異常値として除外されます。
KPM = (行のノーツ数 ÷ 行の時間) × 60文字多様性スコア (Diversity)
コード行毎のワードの文字分布をシャノンエントロピーで評価し、0〜1の多様性スコアを算出します。 「あああ…」のように同じ文字が続く行ほどスコアが低くなります。
diversity = H(文字分布) / log₂(文字数) ※ 全文字が同じ → 0、全文字が異なる → 1 に近い多様性ペナルティの適用
コード多様性スコアが閾値(0.6)未満の行は KPM を指数的に減衰させます。同じ文字の連打が多い行の難易度を補正します。
diversity ≥ 0.6 → ペナルティなし (× 1.0) diversity < 0.6 → adjustedKPM = KPM × (diversity / 0.6)²難易度スコアの計算 (difficultyScore)
コードノーツ数で重み付けした加重平均KPMと、調整済みKPMが高い上位2行の平均(ピークKPM)を 7:3 の比率で合成して難易度スコアを算出します。
avgKPM = Σ(adjustedKPM × notes割合) peakKPM = 上位2行の adjustedKPM の平均 difficultyScore = avgKPM × 0.7 + peakKPM × 0.3ノーツ数補正
コード総ノーツ数 270 を基準に対数スケールで補正します。ノーツが少ない曲は低め、多い曲は高め(上限 ×1.1 倍)に調整されます。
notesScaling = clamp(1.0 + log(totalNotes / 270) × 0.17, min=0, max=1.1)難易度
コード難易度スコアを 100 で割り、ノーツ補正を乗算して最終的な難易度を算出します。
rating = (difficultyScore / 100) × notesScaling
PP (Performance Points)
※計算方法は見直し変更される可能性があります。 ※PP初回算出時2026-4-22以前の譜面が後から更新されたリザルトはratingが不明なため0ppになっています。
Base PP
コード難易度から基礎となる PP を算出します。 rating…難易度
basePP = rating × 100クリア率 (Clear Rate) 補正
コードコードコードコード100%の割合からミスと打ち損じの打数に応じて減算します。かな入力でもローマ字換算で計算します。
totalNotes…総ローマ字ノーツ数、missCount…ミス数、lostNotes…打ち損じノーツ数、keyRate…100/totalNotes、missRate…keyRateの1/2keyRate = 100 / totalNotes missRate = keyRate / 2 clearRate = 100 − missCount × missRate − lostNotes × keyRateクリア率のべき乗で補正します。難易度が高いほど指数が小さくなり、低クリア率でも PP が出やすくなります。
clearRate…クリア率、exp…補正係数exp = 1.2 + 1.0 / (1 + rating / 8) rating=0 → exp≈2.2 rating=5 → exp≈1.7 rating=10 → exp≈1.53 補正係数 = clearRate ^ exp正確率 (Accuracy) 補正
コードタイプ成功数 ÷(タイプ数 + ミス数)で正確率を算出し、2乗で補正します。 正確率が落ちるほど PP が大きく減少します。
accuracy…正確率、type…タイプ数、miss…ミス数accuracy = type / (type + miss) 補正係数 = accuracy²速度補正
コード再生速度 1.0 以上で補正が上昇し、最大 1.5 倍まで加算されます。(再生速度1.0 未満はランキング登録不可)
speedMultiplier = min(1 + (speed - 1) × 0.5, max=1.5)譜面リザルトのPP値
コード各スコアの PP 値を算出します。
rawPP = basePP × accuracy² × clearRate^exp × speedMultiplier実力ランキングの合計PP
コード全スコアの PP から上位 200 件を選び、ランク順に 0.95 ずつ減衰をかけて合算します。 1位のスコアが最大に寄与し、順位が下がるほど貢献度が小さくなります。
totalPP = Σ pp[i] × 0.95^i (i = 0〜199、上位200件)