HSP3dishで顧客管理の計算 その2

前回からの続き

step3
商品が何日に1個の割合で売れるのかを求めましょう。

day1=0.00
day1=buy/cont
;day1=85.935895
;86日に1個の割合で商品が売れる

価格1500円の商品が86日に1個の割合で売れるなら
1500/86=17.44円

∴ 広告料は17円まで引き上げても利益が出る


~ ケース その2 ~

・ある商店では商品に1日当たり10円の広告料を支払っています。

・商品の価格は商品Aは1500円、商品Bは750円、商品Cは375円です。

・ある顧客Sはこのうちのどれか一つを購入します。

・購入してくれる確率は1/200日です。つまり来店200回に1回の割合です。

・Sさんは1度購入すると再度購入する確率が1/40日に上がります。つまり来店40回に1回の割合になります。

・しかし買わずに50日を過ぎると元の1/200日の購入確率に戻ってしまいます。

・購入確率が1/40日の時は広告料がかからないものとします。

・Sさんの1回の購入額の平均は790円です。

[ Q ]広告料は何円まで引き上げても利益が出るでしょうか?


step1
広告料のかからない40日間で再度商品が購入される確率を求めましょう。

buy=200.00 ;商品購入確率
incent=50.00 ;Sさんが購入しやすくなる期間 50日
excite=40.00 ;Sさんテンションが上がって購入する確率

;テンションUP1日目で購入されない確率pro1
pro1=0.00
pro1=(excite-1)/excite

;テンションUP50日で購入されない確率pro2
#include “hspmath.as”
pro2=0.00
pro2=pow(pro1,incent)

;テンションUP50日で購入される確率pro3
pro3=0.00
pro3=1.00-pro2


step2
一度商品が購入されると平均何回連続で商品が売れるのか?
その回数を求めましょう。
広告料がかからない50日間で再度商品が購入された場合も
連続して商品が購入されたものとみなします。

;連続して購入される確率pro4
pro4=pro3

;平均購入回数用 変数
cont=0.00

;0で除算しましたエラー回避用 変数pro5
pro5=0.00

;平均購入回数 cont
pro5=1.00-pro4
pro5=pro5*100
cont=(1.00/pro5)*100
;cont=3.546249


step3
;商品が何日に1個の割合で売れるのかを求めましょう。

day1=0.00
day1=buy/cont
;day1=56.397620

平均790円で売れる商品が56日に1個の割合で売れるなら
790/56=14.1円  

∴ 広告料は14円まで引き上げても利益が出る


————————————————



HSP3dishで顧客管理の計算 その1

:ある商店では商品に1日当たり10円の広告料を支払っています。

:商品の価格は1500円です。

:ある顧客KとTはいつも二人で来店します。

:KとTのどちらかが商品を購入します。二人同時に購入することはありません。

:購入してくれる確率は1/300日です。つまり来店300回に1回の割合です。

:Kさんが購入した場合、次の日にまたこのうちの二人のどちらかが商品を購入します。
この間、広告料はかかりません。

:Tさんが購入した場合、インセンティブとして100日間有効のドリンクサービス券を渡します。
その効果でその後100日間は広告料がかからないものとします。

:どちらの顧客が商品を購入するのか?その割合は6:4です。
Kさんが60%、Tさんが40%です。

[ Q ] 広告料は何円まで引き上げても利益が出るでしょうか?


step1
広告料のかからない100日間で再度商品が購入される確率を求めましょう。

;商品購入確率
buy=300.0

;インセンティブ期間 100日
incent=100

;Kさんが購入する割合
Ksan=0.60
;Tさんが購入する割合
Tsan=0.40

;インセンティブ1日目で購入されない確率pro1
pro1=0.00
pro1=(buy-1)/buy
;pro1=0.99667

;指数計算を使う道具 hspmath.asをインクルード
#include “hspmath.as”

;インセンティブ期間の100日で購入されない確率pro2
;ここで実数として定義しておかないと下のpow関数でエラーが出る
pro2=0.00
pro2=pow(pro1,incent)
;pro2=0.716132

;インセンティブ期間の100日で購入される確率pro3
;単にpro3=1-pro2にしたら答えは1になってしまう。
pro3=0.00
pro3=1.00-pro2
;pro3=0.283868

∴インセンティブ期間の100日で再度購入される確率は28.3868 %


step2
一度商品が購入されると平均何回連続で商品が売れるのか?
その回数を求めましょう。
広告料がかからない100日間で再度商品が購入された場合も
連続して商品が購入されたものとみなします。

;インセンティブ期間の購入も含めて連続して購入される確率pro4
pro4=0.00
pro4=Ksan+(1.00-Ksan)*pro3
;pro4 0.663753=0.713547

;平均購入回数用 変数
cont=0.00

;0で除算しましたエラー回避用 変数pro5
pro5=0.00
pro5=1.00-pro4

;普通にcont=1/(1-pro4) とすると0で除算しましたエラー。
;100倍するとエラー出なかった
pro5=pro5*100
cont=(1.00/pro5)*100
;平均購入回数 cont=3.490974

∴平均購入回数は3.490974 回


その2に続く


——————————————



HSPでよく使うスクリプトの備忘録1

私がよく使うスクリプトを備忘録として書いておきます。

——————————————————————————
HSPでCSVファイルを読み込む

sdim w,10000

;読込む行列指定
row=250
lin=250
;読込む行列指定

sdim d,64,row,lin

sdim txbf,64000

bload “CSVread.csv”,txbf

;指定ファイル読込

notesel txbf

repeat lin
noteget w,cnt
c=cnt : i=0
repeat row
getstr d.cnt.c,w,i,’,’
i+=strsize
loop
vst=c\100
if vst=0 : wait 1
loop
;指定ファイル読込

mes d.0.0
mes d.0.1
mes d.0.2
mes d.0.3
mes d.0.4

mes d.1.0
mes d.1.1
mes d.1.2
mes d.1.3
mes d.1.4

mes d.2.0
mes d.2.1
mes d.2.2
mes d.2.3
mes d.2.4

mes d.3.0
mes d.3.1
mes d.3.2
mes d.3.3
mes d.3.4

mes d.4.0
mes d.4.1
mes d.4.2
mes d.4.3
mes d.4.4
stop

——————————————————————————

——————————————————————————
HSPでデータをセーブする・ロードする

変数floor と flgend にinput命令で数値を入れてセーブ。
いったんウィンドウを閉じてロードボタンを押すとセーブした値が読み込まれます。

*main
clrobj
cls
pos 0,0
mes “floor= “+floor
mes “flgend= “+flgend

input floor
input flgend

button “セーブ”,*save
button “ロード”,*load

stop

*save
;exist “svflr”
;if strsize>-1 : delete “svflr”

alloc chrdt,8
lpoke chrdt,0,floor
lpoke chrdt,4,flgend
bsave “svflr”,chrdt,8

goto *main

*load
exist “svflr”
if strsize=-1 : goto *main

alloc chrdt,8
bload “svflr”,chrdt
floor=lpeek(chrdt,0)
flgend=lpeek(chrdt,4)

goto *main

stop


値を入力してセーブボタンを押します。


ロードするとセーブした値が読み込まれます。

————————————————————-
<広告>



android7.0からadmobの広告が上部に表示される問題について

————————————————————————-
:admob広告の表示位置を画面上部にする:
Hsp3dish HELPERでadmobを使用する場合、広告は本来画面の下に表示されるはずだけどなぜかandroid7.0から上に表示されてしまう。
androidのバージョンによって広告の位置がバラバラなのは問題なので広告を上に表示で統一する場合。

C:\android\*******\src\tv\hsp\HspActivity.java
HspActivity.javaの

popUp.showAtLocation(mainLayout, Gravity.BOTTOM, 0, 0);
この行のBOTTOMをTOPに変更すると上に表示される。

popUp.showAtLocation(mainLayout, Gravity.TOP, 0, 0);
————————————————————————-

————————————————————————-
:admob広告を強制的に下80ピクセルに表示させる:
広告を上に表示させてそのほかの表示を80ピクセル下に下げる作戦を実行したけれど、アクションゲームなどですべての表示を80ピクセル下げるとなると大変な作業量になってしまう。
そこでアクションゲームの広告は下に表示させる方向でやってみた。

C:\android\*******\src\tv\hsp\HspActivity.java
HspActivity.javaの

popUp.showAtLocation(mainLayout, Gravity.BOTTOM, 0, 0);

この部分を

popUp.showAtLocation(mainLayout, Gravity.NO_GRAVITY, 0, disp_height-80);

このように変更。グラビティでは指定せずにディスプレイの下から80ピクセルに表示させる。

実際やってみると実機で表示させた場合、画面サイズやmain.cで確保した描画領域などの関係でゲーム画面の一部が広告で隠れる機種があった。
そこでゲーム画面のscreenで確保する描画領域を960としたとき
disp_heightは  -120

popUp.showAtLocation(mainLayout, Gravity.NO_GRAVITY, 0, disp_height-120);

main.cは 1130

hgio_view( 600, 1130 ); // screen size

このようにするとなんとかうまく表示できた感じ。

ちなみに覚書きとしてテキストファイルに変更行などを保存しておいて、実際にコピペして使おうとしたらUTFのマッピング?エンコード?がなんちゃら言われてビルドエラーになった。
androidフォルダにあるプロジェクトフォルダ内のactivityjavaファイルから変更行を-120とか手作業でやったら大丈夫やったよ。
————————————————————————-

————————————————————-
<広告>