ShinnosukeSuzuki / techtrain-mission-ca-tech-dojo-golang

オンライン版 CA Tech Dojo サーバサイド (Go)編
0 stars 0 forks source link

ガチャ実行APIの実装 #8

Closed ShinnosukeSuzuki closed 2 months ago

ShinnosukeSuzuki commented 2 months ago

ガチャ実行APIの実装

ガチャを引いてキャラクターを取得する処理。 獲得したキャラクターはユーザ所持キャラクターテーブルへ保存する。 同じ種類のキャラクターでもユーザは複数所持することができる。 リクエスト

{
  "times": 0
}

レスポンス

{
  "results": [
    {
      "characterID": "string",
      "name": "string"
    }
  ]
}

ガチャロジックの詳細について

  1. キャラクターの確率の総和totalProbabilityを計算
  2. 確立の累積和cumulativeProbabilitiesを計算
  3. 0〜1の乱数にtotalProbabilityを掛けることによって 0〜totalProbabilityの範囲の乱数を作成する
  4. 3で生成した乱数が累積和のどのindexに当てはまるかを二分探索する
  5. indexで指定したキャラクターをガチャで選ばれたものとする

Issues

close #7