“8.5折购买商品”和“原价购买商品得12倍积分”,哪个更划算?
现在的商家为了保持用户粘性,总是积极的推荐你办理自家会员,美其名曰,可以打折,并且可以累计积分抵钱用或者积分换购商品,那么到底哪种策略最划算呢?下面我们来分析一下
问题描述
我们假设这个商家为水果店,为了简化模型,这个店的商品只有我最爱吃的西瓜~~(是“日本西瓜”,单价200,大误)~~ ,该店的积分有两种使用途径:
- 直接抵钱用,100积分=1元,换算后直接在结账时使用
- 攒积分,然后可以用等价于5折价钱的积分来抵扣商品,例如一个“日本西瓜”200元,那么我用10000积分就可以换购一个西瓜。
同时该店铺根据购买方式不同,有两种积分积累策略:
- 利用会员折扣购买,例如我的会员等级为至尊铂金会员,商品可以打8.5折,每消费1元可以累计2.5个积分:
- 原价购买,但同时可以获得12倍积分,也就是我消费1元,可以获得12个积分。
问题是:应该采取哪种方案来消耗积分最划算,又是哪种策略来购买商品更划算呢?
积分消耗策略分析
1、 积分直接抵钱用
假设商品原价为X,那么我以会员折扣购买支出0.85X,获得积分0.85X * 2.5 * 0.01(元);如果我以原价购买,支出X,获得积分0.12X(元)的积分,总结为下表
策略 | 支出 | 积分收入 | 总支出 |
---|---|---|---|
会员折扣 | 0.85X | 0.02125X | 0.82875X |
12倍积分 | X | 0.12X | 0.88X |
可以看到,如果把积分当钱用,利用会员折扣更划算
我们来直观对比一下这两种策略
可以看到,如果把积分抵钱用,那么12倍积分就非常不划算了,与理论分析一致。
放大来看
因此我们得到结论:
如果积分当钱用的话,一定是会员折扣更划算,但是整体来看,如果积分都攒着,用积分半价兑换商品的话,肯定更划算。我们接下来的问题就是如果积分都留着兑换商品,那么哪种购买方式更划算呢?
P.S. 对于会员价购买商品策略来说,刚开始积分抵钱和积分换购商品两者的支出差不多,但是随着积分兑换2次商品后,红色线就会一直在绿色线下方,并且两者差距越来越大,如下图所示:
因此下文,我们主要考虑用积分兑换商品,来比较会员折扣购买策略 和 12倍积分策略的优劣
2、 积分兑换商品
这个部分我们只能直观的想到,刚开始阶段,肯定是12倍积分策略支出的钱更多,但是随着购买商品的越来越多,积分越来越多,有了商品兑换行为后,哪种策略更划算就不能直观想出来了,因此我们写了一段代码来分析两种策略的优劣:
我们判断策略优劣的准则:考虑购买相同数量的西瓜,两种策略,需要支出的钱越少则越好;
同时,如果积分够用,优先使用积分兑换商品。
如果我们考虑买100个西瓜,整体来看两种策略的花费,是这样的(红色线为会员价购买商品,黑色线为12倍积分购买策略)
隐约能看出一点趋势,黑色线慢慢低于红色线了。
放大来分析:
从图中可以看出,会员价购买第25个西瓜后才是兑换的西瓜,
而12倍积分策略,第6个西瓜就是兑换获得的,极大的压低了同样数量下的花费;
同时我们注意到,黑色线从最开始高于红色线,慢慢的越过红线,过程中两条曲线相交多次,趋近于在红色线下方
随着购买西瓜越来越多,在买第77个西瓜的时候,两个曲线最后一次相交,也就是红色曲线最后一次低于黑色曲线,换句话来说:会员价85折购买西瓜的花费在购买77个西瓜之后会一直高于12倍积分策略,这里的西瓜可以换成任何一种商品。
下面我们来直观对比两种策略的花费(纵坐标为会员价购买 比 12倍积分策略 多花多少钱):
可以看出,随着购买商品越来越多,会员价购买这一策略会花更多的钱,也就是说,随着购买行为的进行,从获得商品的角度来说,12倍积分是更划算的。
下面我们来看一下,如果购买足够多的商品,两者的差距会是多少。
可以看到,如果买1000个西瓜,两种策略的差距可以达到1800元,当然这是与设置的西瓜的价格有关的,大概为西瓜价格的9倍。
两个策略的价格差如下图所示:可以看到,买的东西越多,花费的价钱差越来越大
结论
- 积分当钱花不划算,应该选择积分兑换商品
- 积分兑换商品的话,长远来看,采用12倍积分策略是更划算的。
- 长远来看,根据获得相同数量的商品,用花费钱数来比较各策略优劣
花费钱数:
积分当钱花-12倍积分> 积分当钱花-会员折扣购买策略>积分兑换商品-会员折扣购买策略>积分兑换商品-12倍积分,如下图
划算程度依次递减。
- 必须说,这里的模型和对比还比较简单,没有考虑很多其他因素,比如提前跟水果店里预订水果的话还可以享受9折或者9.5折优惠,同时,这里考虑的是最高级别的铂金会员打8.5折,其他低级别的会员例如9折,9.5折的情况也没有考虑,后续如果有时间也可以再给一个更复杂的模型。
最后附上代码:
avg = 200;%西瓜单价
bonus1 = 0;%积分
cash1 = 0; %花费的钱数
indSet = 1:100;
cash1Vec = zeros(length(indSet),1);
cash2Vec = zeros(length(indSet),1);
num1Vec = zeros(length(indSet),1);
num2Vec = zeros(length(indSet),1);
num1 = 0;%西瓜数
% figure
%% ----------------------------积分兑换商品-会员折扣购买策略
for ind = indSet
coff1 = 0.85;
if bonus1 >= 0.5*avg
num1 = num1 + 1;
bonus1 = bonus1 - 0.5*avg;
num1Vec(ind) = num1;
% plot(num1,f1,'ro')
% hold on
continue
elseif bonus1 < 0.5*avg
cash1 = cash1 + coff1*avg;%支出的钱
bonus1 = bonus1 + coff1*avg*2.5*0.01;%积分对应的钱
num1 = num1 + 1;
num1Vec(ind) = num1;
end
cash1Vec(ind) = cash1;
% plot(num1,f1,'ro')
% hold on
end
%% ----------------------------积分兑换商品-12倍积分
bonus2 = 0;%积分
f2 = 0; %花费的钱数
num2 = 0;%西瓜数
for ind = indSet
coff2 = 1;
if bonus2 >= 0.5*avg
num2 = num2 + 1;
bonus2 = bonus2 - 0.5*avg;
num2Vec(ind) = num2;
% plot(num2,f2,'k*')
% hold on
continue
elseif bonus2 < 0.5*avg
f2 = f2 + coff2*avg;%支出的钱
bonus2 = bonus2 + coff2*avg*12*0.01;%积分对应的钱
num2 = num2 + 1;
num2Vec(ind) = num2;
end
cash2Vec(ind) = f2;
% plot(num2,f2,'k*')
% hold on
end
%% ----------------------------- 积分当钱花-会员折扣购买策略
bonus3 = 0;%积分
f3 = 0; %花费的钱数
num3 = 0;%西瓜数
cash3Vec = zeros(length(indSet),1);
num3Vec = zeros(length(indSet),1);
for ind = indSet
coff3 = 0.85;
if bonus3 ~=0
f3 = f3 + coff3*avg - bonus3;%支出的钱
bonus3 = (coff3*avg - bonus3)*2.5*0.01;%积分对应的钱
num3 = num3 + 1;
num3Vec(ind) = num3;
elseif bonus3 == 0
f3 = f3 + coff3*avg;
bonus3 = bonus3 + coff3*avg*2.5*0.01;%积分对应的钱
num3 = num3 + 1;
num3Vec(ind) = num3;
end
cash3Vec(ind) = f3;
% plot(num2,f2,'k*')
% hold on
end
%% ------------------------积分当钱花 - 12倍积分策略
bonus4 = 0;%积分
f4 = 0; %花费的钱数
num4 = 0;%西瓜数
cash4Vec = zeros(length(indSet),1);
num4Vec = zeros(length(indSet),1);
for ind = indSet
coff4 = 1;
if bonus4 ~=0
f4 = f4 + coff4*avg - bonus4;%支出的钱
bonus4 = (coff4*avg - bonus4)*12*0.01;%积分对应的钱
num4 = num4 + 1;
num4Vec(ind) = num4;
elseif bonus4 == 0
f4 = f4 + coff4*avg;
bonus4 = bonus4 + coff4*avg*12*0.01;%积分对应的钱
num4 = num4 + 1;
num4Vec(ind) = num4;
end
cash4Vec(ind) = f4;
% plot(num2,f2,'k*')
% hold on
end
for ind = indSet
if cash1Vec(ind) == 0
cash1Vec(ind) = cash1Vec(ind-1);
end
if cash2Vec(ind) == 0
cash2Vec(ind) = cash2Vec(ind-1);
end
end
figure
plot(num1Vec,cash1Vec,'ro-')
hold on
plot(num2Vec,cash2Vec,'k*-')
hold on
plot(num3Vec,cash3Vec,'g^-')
hold on
plot(num4Vec,cash4Vec,'b+-')
xlabel('西瓜数量');
ylabel('花费金钱')
legend('积分兑换商品-会员价购买','积分兑换商品-12倍积分策略',...
'积分换钱-会员价购买','积分换钱-12倍积分策略','location','west')
figure
stem(num2Vec,cash1Vec-cash2Vec)
xlabel('西瓜数量');
ylabel('会员价购买 比 12倍积分策略 多花多少钱')