首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-04 
游戏服务器开发-概率实现这里有开发游戏服务器端的程序员吗?例如游戏装备强化概率是25%, 是怎么实现的?是

游戏服务器开发-概率实现
这里有开发游戏服务器端的程序员吗?
例如游戏装备强化概率是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); 这是一个根据当前系统时间的不同有着不同数值产生的,可靠一点。两个函数的具体用法就不细述了。还有就是随机算法了,这个是配合着具体的应用使用的。
[解决办法]
我们定义一个表,然后让策划填写,然后我们就根据这个来程序随机。。

热点排行