概要
スマホのゲームなどでよく見かける「ガチャ」の仕組みです。
リストの中からランダムで抽出されるだけの仕組みです。
全てが同一確率なので、中身が減らないおみくじなどに利用できるのではないでしょうか。
もしくは確率分のGachaItemsを入れて確率を実現させる事が可能です。
例えば、当たり1%、ハズレ99%の場合、当たりを1レコード、ハズレを99レコード入れます。
設計詳細
ER図
erDiagram
Gachas ||--o{ GachaItems : "has many"
Gachas {
int id "PK"
string name
}
GachaItems {
int id PK
int gacha_id FK
string item_name
}
使い方
SQLで取得
一番簡単な取得方法は以下。SQLで一発で取得可能です。
SELECT * FROM GachaItems WHERE gacha_id = ? ORDER BY RAND() LIMIT 1;
SQLランダム部分はコードで取得
まずはGachaItems
の一覧をSQLで取得します。
SELECT * FROM GachaItems WHERE gacha_id = ?;
SQL取得したリストからランダムで1件取得します。
shuffle($GachaItems);
return $gachaItems[0]; // array_pop()とかでも可
PHP
コメント