Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81230
  • 博文数量: 42
  • 博客积分: 687
  • 博客等级: 上士
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-01 15:39
文章分类

全部博文(42)

文章存档

2011年(12)

2010年(30)

分类:

2010-09-09 16:25:49

#include
#include
#include
#include

#define ALPHA_VALUE 0.73

int zipf_variate(int N, double alpha = ALPHA_VALUE)
{
 double sigma = 0.0;
 double sum = 0.0;
 int i;
 double r = (double)rand() / (double)RAND_MAX * 1.0;
 for(i = 0; i < N; i++)
 {
    sigma += exp(-alpha*log(i+1));
  }
  for(i = 0; i < N; i++)
  {
   sum += exp(-alpha*log(i+1));
   if (sum / sigma >= r)
     return i;
  }
  return i;
}

 

阅读(774) | 评论(0) | 转发(0) |
0

上一篇:异常6

下一篇:dump

给主人留下些什么吧!~~