[随机数美高梅娱乐4858.com]网游垫装备及其思考

美高梅娱乐4858.com 1

  学而无术者比不学无术者特别拙劣       —-Franklin

近年来在做一些社交SNS方面的数据解析工作,发现了一些与娱乐运营相通的东西,社交娱乐的某些目的和术语其实在大型的网游数据解析方面也足以应用。本质上她们意味着的意义是同等的,只是在突显和分析的角度上差异而已。前些天来说多个术语MAU,DAU,DAU/MAU。

 

本文综合了部分论坛博客的篇章以及外国部分素材,不对或有歧义之处还请各位考订和谅解。

  玩游戏的,总归会有好多感受,网上略微搜一下,就会发现许多垫装备的言论,很几人信任垫装备有用.这是难题!!

MAU=Monthly Activited Users
 月活蹦乱跳用户

  OK,让大家来把题目简化一下,因为装备创设合成可能率实在是繁体,所以存在必要的简化.问:

利用在SNS社交游戏和重型互连网游戏中,其意思表示在自总计之日算起一个月内登录过游戏的玩家总量。

 

DAU=Daily Activited Users
 日活跃用户

  老是的抛一枚硬币,战败N次之后,第N+1次战败的票房价值是有点?会不会比50%高(!!!那是我们真正要解决出的题材).

至于此数量,存在一定的争议,有的度量是把每日重复登录的用户也总计在内,可是那种状态下并未适用的意味游戏的实际数据水平。

 

别的一种度量形式是不划算重复登录的玩家,总结每天登录过游戏的玩家即可。

  抛硬币,是轻易事件.理论上讲,成功退步的可能率各50%(头像朝上与否),而且其余四遍随即之间完全毫不相关.否则他就不叫自由事件了.当年可能率论学的不得了,不过脑子里面还有某些意识,我不信任三番五次的退步能够显然压实成功的几率!

那多个目的可以衡量服务的衰落周期。

  不过理论学的太差,我不恐怕声明第N+1次的几率仍旧那么高…..好呢,我只能写代码,看看模拟的实际情形是怎么着样子,来代码:

DAU/MAU

#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <Windows.h>
#include <assert.h>
#pragma comment(lib, "advapi32.lib")

#define RANDOM_TIMES    1000000
#define FAIL_TIMES      5
#define FAIL_PERCENT    50
#define PERCENT_MAX     100

//#define C_RANDOM

#ifdef C_RANDOM
//nop
#else

#define RAND_MAX        65535
static HCRYPTPROV       hProvider = 0;
static const DWORD      dwLength = 2;
static BYTE             pbBuffer[dwLength] = {};

#endif

static void 
random_init()
{
#ifdef C_RANDOM
    srand((int)time(0));
#else
    DWORD result =::CryptAcquireContextW(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT);
    assert(result);
#endif
}

static void 
random_close()
{
#ifdef C_RANDOM
    //nop
#else
    ::CryptReleaseContext(hProvider, 0);
#endif
}

static int 
_random()
{
    unsigned short _rand_value = 0;
#ifdef C_RANDOM
    _rand_value = (unsigned short)rand();
#else
    DWORD result = ::CryptGenRandom(hProvider, dwLength, pbBuffer);
    assert(result);
    _rand_value = *(unsigned short*)pbBuffer;
#endif
    return _rand_value;
}

static long random_count = 0;
static int 
random_result()
{
    int times = 0;
    while(times < FAIL_TIMES)
    {
        int _num = _random();
        random_count++;
        if((1.0f*_num/RAND_MAX) > (1.0f*FAIL_PERCENT/PERCENT_MAX))
        {
            times++;
        }
        else
        {
            times = 0;
        }
    }
    random_count++;
    return _random();
}


int main(int argc, char* argv[])
{
    random_init();

    long times_total = 0;
    long times_fail = 0;
    for(int times = 0; times < RANDOM_TIMES;++times)
    {
        int x = random_result();
        if((1.0f*x/RAND_MAX) > (1.0f*FAIL_PERCENT/PERCENT_MAX))
            times_fail++;
        times_total++;
    }
    std::cout<<"total: "<<times_total<<std::endl;
    std::cout<<"fail: "<<times_fail<<std::endl;
    std::cout<<"random_count: "<<random_count<<std::endl;
    system("pause");

    random_close();
    return 0;
}

用户活跃度指数衡量用户的黏性,留存率,游戏收入情形,那在应酬游戏中使用率卓殊高,可以确认为用户活跃度指数,相当于用户的活跃度如何,理论上可以接受的危机值是0.2,也等于说当值低于0.2时,游戏的一体化服务进入一个衰退的阶段,只然则这些衰退的等级依照游戏自己的寿命还有长短之分。

 

当比值接近1时,那么用户很活泼,流失率低,黏性强。

  那里用了三种随机数的贯彻,一种是业内C随机数,其它是CryptGenRandom.Windows上边没/dev/random和/dev/urandom,所以用哪些API代替.

DAU/MAU怎么解释来表明原理?

  代码我不想做过多的表明,比较根本的就那多少个宏,没事干本身改变一下宏,运行一下,看看结果:-)我那边CryptGenRandom的三遍结果:

俺们假使MAU是不变的,假如DAU在加码,表达游戏对用户的贺词和黏性起首发出深度的交互效率,在天天登录游戏的用户规模越大,越逼近MAU的水平,那么就是用户上线的造化和效用扩大。要是DAU下落,那么用户初步对游戏失去兴趣。

 

“MAU和DAU分别从微观和微观角度对劳务的用户黏性进行了衡量,也可以这样说,MAU更像战略层面的性状,DAU更像战术层面的特征。”

total: 1000000
fail: 499497
random_count: 62905788
请按任意键继续. . .

total: 1000000
fail: 499914
random_count: 62979706
请按任意键继续. . .

示例:

  此外再上三次正式C随机数的周转结果:

若是一款游戏拥有50万DAU,100万MAU,那么比值是0.5,也就说玩家每月平均体验游戏时间为0.5*30=15天。表达游戏黏性比较强。

 

DAU/MAU的最低极限是0.2,那保障游戏可以完成临界规模的病毒式传播和用户粘性。

total: 1000000
fail: 500330
random_count: 63103246
请按任意键继续. . .

事实上,对于一款产品,假使在OBT的前八个月DAU和MAU都会保持安静的增强,因为那几个时期,用户处于第一安装以及大批量的广告投入,而真正看游戏的质量和生机应该从OBT之后的三个月算起。

  可以见见,四遍随即模拟的结果,大致是形似的:接连失利N次之后,第N+1次的几率是不变的. 那才叫自由事件.:-)

相当于说可以指示大家娱乐成功运营的申明之一就是DAU/MAU,倘使在后头该值保持在20%之上,那么他有着稳定的用户留存率,并不停毛利。而那么些值应该在OBT七个月后再来衡量,换句话如果只在最初得到高的值,而后快捷下滑,那么注明上网本人对玩家魔力不足,留存率不高。

 

  不过难点还没完,这里必要架设随机数的质量非凡的好,五回随机之间从未关联.事实上,标准C的肆意数很难形成那一点(伪随机数生成器).伪随机数,有大概被破解,预测;真随机数不会:-D.

  所以,网游在进行跟RMB相关的即兴时,可以考虑一下真随机数,大概是质量稍微好一点的RNG;跟RMB非亲非故的,libc的rand/rand_r足矣~~~~

PS:

记得我们一个谋划,给怪物掉落的可能率设置的太低(20%大概25%),然后打了听大人讲有四十多少个怪,一个东西都没掉….后来换成rand_r,效果好了很多.

 

参考:

http://msdn.microsoft.com/en-us/library/aa379942(v=vs.85).aspx

发表评论

电子邮件地址不会被公开。 必填项已用*标注