[Python]20倍ファミチキをTwitterで当てる方法


はじめに

ファミチキを当てたかったら日付変わった瞬間に応募するな

Twitterでファミチキ?

Twitterでファミチキを当てるってなんの話かと思う人もいると思いますが,下の画像を見れば分かる人もいるのではないでしょうか.

広告の画像が引用ツイートではでなかったので貼ってます.

これに限らず,Twitter上ではリプライで毎日ホニャララ名様に当たるキャンペーンが多く開催されています.できるならこれを当てたいというのが人の性です.

そこで,今回ファミチキキャンペーンに関して,すべての抽選参加者とその結果を集計し当てるコツを調査しました.

調査手法

ファミチキの当選結果は,ファミマ公式(famima_now)ではなくファミリーマート公式返信用アカウント(famima_reply)が通知しています.

なのでTwintという最強のツイート収集用のライブラリを使い,ひたすら(famima_reply)のツイートを収集しました.

Q.なぜTwintは最強なのか?
A.期間や取得数上限なくツイートを収集可能だから.公式APIのフリープランだと期間は直近1週間,上限は3000程度であるはず...

収集したデータ: 7/26~7/29のfamima_replyの全ツイート(150万以上)

そして,収集後のデータをPandasでうまいこと整形して,TweepyでTwitterAPIからデータ(FF数・アカウント開設日)を取得し可視化を行いました.

結果

これは7/26~7/29のキャンペーンの抽選結果に基づきます.

おおまかに分析

  • 一日あたりの応募者数: 約38000人
  • 一日あたりの当選者: 10000人(公式情報)
  • 一日あたりの当選確率: 約2.6%
  • 一週間(キャンペーン期間)中に当たる確率: 約17%
1-(1-0.026)^7=17\%

一週間連続で外れる以外の可能性

時系列で分析(7/26だけ)

どの日付でもおんなじ傾向だったので,7/26だけを見ます.データを30分ごとに当選者・落選者に分けて分析します.

30分ごとのファミマ抽選結果


日付を変わった瞬間や,起床する時間帯に応募する人がめっちゃくっちゃ多いみたいに応募者は時間帯ごとに偏りがあるのに,当選者200人前後で一定ですね.おそらく,意図的に時間帯ごとに偏りなく当選者が出るように設定されていると考えられますね.

Q.なせ応募者は30分ごとに200人なのか?
A.1日を30分に分割して10000人で割ると,大体208人になる.

30分ごとのファミマ当選確率

したがって,当選確率は応募者の少ない時間帯が高くなります.なので一枚目の画像になるわけですね.

ファミチキをほしけりゃ3時から4時・19時以降に応募しろってことですね.

当たる"アカウント"を分析

7/26~7/29の抽選結果を当選者・落選者からそれぞれ1000アカウント分ランダムサンプリングして分析を進めました.アカウントのデータは分析日(8/28)に準じるので,キャンペーン期間中とはややズレがあるかもしれません.

当選者と非当選者のFF数分布


対数グラフで表してるので,実際には0でも1の軸にデータが表示されてしまっている部分もあります.当選者・落選者が重なっているゾーンは抽選に参加できているということですね.注目すべきなのは,当選者と落選者が別れてしまっているゾーンです.

やはり,FF数の偏っているアカウント,特にフォロワー数が0のアカウントはフォロー数によらずすべて落選しており,明らかに異常だと考えられます.

したがって,当てたければフォロワー数1以上のアカウントで応募すべきですね.

アカウント開設時期


少し見づらいのですが,キャンペーン時期(2020/7)の直近(2020/5~2020/6)に開設されたアカウントに関しては,当選者と落選者に乖離があります.直近に開設されたアカウントはフォロー数も少ないと考えられるので,「フォロワー数が0のアカウントはフォロー数によらずすべて落選」と繋がります.また,抽選応募用の捨てアカウント等を防ぐためのフィルターがあるのではと考えられますね.(強引な推測ですけど...)

当たるコツまとめ

  • 3時から4時・19時以降に応募
  • フォロワー数1以上のアカウントで応募
  • 捨てアカウントでは応募しない