读书人

游戏服务器开发-概率兑现

发布时间: 2013-01-04 10:04:14 作者: rapoo

游戏服务器开发-概率实现
这里有开发游戏服务器端的程序员吗?
例如游戏装备强化概率是25%, 是怎么实现的?
是通过时间种子求随机数的方法实现的吗?
[解决办法]


[解决办法]

#define Random_Int(a,b)\
((a)+(rand()%((b)-(a)+1)))
//传入一个[0,100]的概率,进行一次随机,判断是否命中,使用宏Random_Precent进行计算
class CRandomPrecent
{
public:
static bool Random_Precent(int n)
{
if(n<0)
n=0;
if(n>100)
n=100;

int nRandom=Random_Int(1,99);
return nRandom<n;
};
};
#define Random_Precent(n) CRandomPrecent::Random_Precent(n)



给分给分 穷疯了..
[解决办法]
不知道你的25%是不是数值策划给你的.. 一般游戏上的概率我接触过的,并不是太复杂,一般都是用rand函数
[解决办法]
并不是完全由时间种子来随机

一般会有计算一些加权
比如幸运值可以加权重
比如当前服务器上已经存在的高级装备的数量,数量过多会减权重

最终得出一个范围 ,在这个范围内按比例随机
[解决办法]
引用:
C/C++ code?123456789101112131415161718#define Random_Int(a,b)\ ((a)+(rand()%((b)-(a)+1)))//传入一个[0,100]的概率,进行一次随机,判断是否命中,使用宏Random_Precent进行计算 class CRandomPrecent { ……


+1
[解决办法]

typedef int INT32;
inline INT32 GetRand( INT32 nMin,INT32 nMax)
{
if(nMin == nMax+1)
{
return nMin;
}
return rand % (nMax - nMin + 1) + nMin;
}

[解决办法]
游戏服务器我没写过,但是随机程序我还是有接触过的。基础就是库里的随机函数,int rand(void);这个函数产生的虽然是随机数,但是还是有规律呃。所以需要加一个种子,就用到了更高级的随机函数,void srand(unsigned int seed); 这是一个根据当前系统时间的不同有着不同数值产生的,可靠一点。两个函数的具体用法就不细述了。还有就是随机算法了,这个是配合着具体的应用使用的。
[解决办法]
我们定义一个表,然后让策划填写,然后我们就根据这个来程序随机。。

读书人网 >C++

热点推荐