AtCoderで上位何パーセントかわかる早見グラフを作ってみた

この記事は2023年11月30日に更新いたしました。

初めまして、ごごちと申します。

今回は競技プログラミング最大手のAtCoderにて、
Ratingが上位何パーセントにあたるか一目でわかるグラフを作成しました!
自分が参加者のなかでどれくらいの順位なのか、参考にしていただけると幸いです!

(2022/8/31追記)

より正確かつ効率的に早見グラフを作れる様にしました!コメントくださった方、ありがとうございます!

AtCoderの順位ヒストグラムのソースから上位何パーセントかわかる早見グラフをPythonで作ってみた

上記コードを使ってランキングページのHTMLからグラフを作れるようになったので、定期的に更新しようと思います!

(2023/6/1追記)

スクレイピングプログラムを作成し、
定期実行によってログ取得できるようにしました。
順位ヒストグラムの定期スクレイピングによるログ作成!【AtCoder】【レーティング分布】
今後はログ取得して分布の推移を見てみたいと思います!

順位ヒストグラムの定期スクレイピングによるログ作成!【AtCoder】【レーティング分布】と書かれたアイキャッチ。matplotlibのコードと、参加者数・上位パーセントの2つのグラフを並べている

(2023/7/31追記)

レーティング分布のログから、
分布の時系列変化を可視化しました。
AtCoderのレーティング分布の時系列変化をグラフにしました(随時更新予定)

AtCoderのレーティング分布の時系列変化をグラフにしましたと書かれたアイキャッチ。総参加者数の推移と、レーティング帯ごとの人数の推移の2つの折れ線グラフを並べている

目次

2024/3/31 更新

全参加者

2024年3月31日時点のレーティング別参加者数の棒グラフ。全参加者117,819人で、レーティング2が8,695人と突出し、69〜114の帯が5,000人台で最も厚い

上位パーセント(全レーティング対応)

2024年3月31日時点の上位パーセントの棒グラフ。レーティング400で上位23.5%、800で12.6%、1200で6.3%、1600で2.8%、2000で0.8%

上位パーセント(レーティング1200未満対応)

2024年3月31日時点の上位パーセントをレーティング1100以下に絞った棒グラフ。0で99.7%、400で23.5%、800で12.6%、1100で7.7%

上位パーセント(レーティング1200以上対応)

2024年3月31日時点の上位パーセントをレーティング1200以上に絞った棒グラフ。1200で6.296%、1600で2.819%、2000で0.816%、2400で0.246%、2800で0.057%

2023/11/27 更新

全参加者

2023年11月27日時点のレーティング別参加者数の棒グラフ。全参加者111,470人で、レーティング2が9,035人と突出している

上位パーセント(全レーティング対応)

2023年11月27日時点の上位パーセントの棒グラフ。レーティングが上がるほど上位パーセントが下がる様子を全帯域で示している

上位パーセント(レーティング1200未満対応)

2023年11月27日時点の上位パーセントをレーティング1100以下に絞った棒グラフ

上位パーセント(レーティング1200以上対応)

2023年11月27日時点の上位パーセントをレーティング1200以上に絞った棒グラフ

2023/9/19 更新

全参加者

2023年9月19日時点のレーティング別参加者数の棒グラフ。全参加者109,319人で、レーティング2が8,265人と突出している

上位パーセント(全レーティング対応)

2023年9月19日時点の上位パーセントの棒グラフ。レーティングが上がるほど上位パーセントが下がる様子を全帯域で示している

上位パーセント(レーティング1200未満対応)

2023年9月19日時点の上位パーセントをレーティング1100以下に絞った棒グラフ

上位パーセント(レーティング1200以上対応)

2023年9月19日時点の上位パーセントをレーティング1200以上に絞った棒グラフ

2023/6/1 更新

全参加者

2023年6月1日時点のレーティング別参加者数の棒グラフ。全参加者104,380人で、レーティング2が7,412人と突出している

上位パーセント(全レーティング対応)

2023年6月1日時点の上位パーセントの棒グラフ。レーティングが上がるほど上位パーセントが下がる様子を全帯域で示している

上位パーセント(レーティング1200未満対応)

2023年6月1日時点の上位パーセントをレーティング1100以下に絞った棒グラフ

上位パーセント(レーティング1200以上対応)

2023年6月1日時点の上位パーセントをレーティング1200以上に絞った棒グラフ

2023/3/13 更新

全参加者

2023年3月12日時点のレーティング別参加者数の棒グラフ。全参加者104,308人で、レーティング2が7,027人と突出している

上位パーセント(全レーティング対応)

2023年3月12日時点の上位パーセントの棒グラフ。レーティングが上がるほど上位パーセントが下がる様子を全帯域で示している

上位パーセント(レーティング1200未満対応)

2023年3月12日時点の上位パーセントをレーティング1200未満に絞った棒グラフ

上位パーセント(レーティング1200以上対応)

2023年3月12日時点の上位パーセントをレーティング1200以上に絞った棒グラフ

2022/12/3 更新

上位パーセントの割合は、6月時点からあまり変わっていないようです。
参加者数も増えているようなので、分布が平衡状態になっていると考えられます。

全参加者

2022年12月3日時点のレーティング別参加者数の棒グラフ。全参加者101,251人で、レーティング2が6,129人と突出している

上位パーセント(全レーティング対応)

2022年12月3日時点の上位パーセントの棒グラフ。レーティングが上がるほど上位パーセントが下がる様子を全帯域で示している

上位パーセント(レーティング1200未満対応)

2022年12月3日時点の上位パーセントをレーティング1200未満に絞った棒グラフ

上位パーセント(レーティング1200以上対応)

2022年12月3日時点の上位パーセントをレーティング1200以上に絞った棒グラフ

2022/6/19 時点

Ratingごと上位%早見グラフ

全レート対応

2022年6月19日時点のRatingごとのAtCoderユーザ数の棒グラフと上位パーセントの折れ線。全ユーザ数98,270人で、Rating400以上が上位26〜17%、800以上が14〜8%、1200以上が7〜4%、2000以上が1〜0.4%の帯に色分けされている

こちらがAtCoderのヒストグラムを目視トレースし手作業で作った

レートごとのユーザ数ヒストグラムと上位%の折れ線グラフです

このグラフで、各レートと上位%がわかります!

上位50%以上(Rating 72以下)

Rating72以下に絞ったユーザ数の棒グラフ。2022年6月19日時点、全ユーザ数98,270人で、Rating4以下が上位100〜88%、5から72が上位85〜52%にあたる

こちらはRating 72以下、上位50%以上のグラフです。

このグラフからわかることは

  • Rating4以下に1割のユーザがいる
  • Rating72まででおよそ5割のユーザ数をカバーしている

Rating4以下のユーザは

参加回数1回かつ、submitもしていない

のような感じだと思います。

なので、複数回参加してsubmitするだけでも上位90%にはなれそうです。

上位50%以下(Rating 89以上)

Rating89以上に絞ったユーザ数の棒グラフ。2022年6月19日時点、全ユーザ数98,270人で、89から321が上位49〜30%、400台が26〜17%、2000台が1〜0.4%、3000で0.02%にあたる

こちらはRating 89以上、上位50%以下のグラフです。

このグラフからわかることは

  • Rating147が最頻値で上位40%
  • 茶色(Rating400)でも上位26%

最頻値であるRating147が達成できそうなシチュエーションは

コンテストに3-4回参加し、B問題まで半分位の割合で解く

のようなことが考えられそうですね。

AtCoderも全ての人が複数回続けられる訳ではないので、

初めはうまく出来なくても、複数回参加するモチベーションが重要ですね。

作った経緯や筆者の順位、つくって気づいたことなど

作った経緯 : 自分の順位と上位パーセンテージをわかるようにしたかった

AtCoderの公式サイトに表示されるRating分布のヒストグラム。縦線で自分の位置が示されている

こちらはAtCoderのプロフィールから見られるヒストグラムです

こちらのヒストグラムでは、自分の順位しかわからず、

上位何パーセントかがよくわかりませんでした。

なので、ヒストグラムを目視でトレースして

上位パーセントを数値化してみました。

より正確かつ手軽にわかる方法がございましたら、

是非コメントで教えてくださいm(_ _)m

筆者の成績と順位について

AtCoderのコンテスト実績画面。順位23,882位、Rating 536で最高値536の8級、コンテスト参加回数33回、最後の参加は2022年1月8日。レーティング推移の折れ線が表示されている

筆者はレーティング536で順位は23882です。

全ユーザ数98270と見積もったため、

23882/98270 = 0.24

上位24%である事がわかります。

棒グラフの数値と大体合っていますね。

作ってみてわかったこと

複数回参加してsubmitすれば上位90%以上になれる

Rating4以下に1割のユーザーがいるようで、

こういったユーザは

1回だけ参加してsubmitもしなかった

事が考えられます。

まずは複数回参加してsubmitするだけでも上位90%になれそうですね

灰色でもRating 100あれば上位50%

灰色でもRating89の時点で上位48%なので、

Rating100を超えるだけでも上位50%になれます。

これはコンテストに毎週参加してA問題を解き続けるだけで達成できそうです

茶色(Rating 400)になった時点で上位26%

茶色レートである400担った時点で、上位26%になれる様です。

作ってみるまでは筆者は、「茶色レートで上位50%」

と思っていたので、茶色になるだけでも上位4分の1になれる様です

もっと簡単に見られる方法をご存じでしたらご教示ください

今回はAtCoderのレーティングと上位パーセント早見グラフを作成しました。

皆様の参考になれば幸いです

今回はHistgramを目視とレースして手作業でグラフを作ったので、2時間くらいかかりました。

もっと簡単に見られる方法をご存じの方がいらっしゃったら

ぜひコメントなどでご教示くださいm(_ _)m

また、筆者は資格試験の勉強記事も書いております。

令和4年度春期試験の応用情報技術者試験の自己採点結果を(いまさら)公表します

また、競技プログラミングで学んだアルゴリズムをポケモンGOに当てはめた記事も書いております。

ダイクストラ法の計算コスト!ポケモンGOのジムバトル最短討伐時間を確認!

よかったら見ていってください♪

3 COMMENTS

mt

ヒストグラムの数値はHTMLソースを見ると配列で書かれているので(var xaxis= …)それを使えば手間が減るかと思います

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA