⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkfiles.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
// mkfiles.cpp,v 1.2 2004/04/01 05:21:36 bala Exp#include "ace/OS.h"#include "ace/Get_Opt.h"//FUZZ: disable check_for_math_include/#include <math.h>static float gammln (float xx);static float poidev (float xm);int main (int argc, char *argv[]){  ACE_Get_Opt options (argc, argv, "m:s:x:n:");  // m -- median file size in kB  // x -- maximum file size in kB  // n -- number of files  long median = 8;  long maximum = 1024;  long number = 1000;  int c;  while ((c = options ()) != -1)    {      switch (c)        {        case 'm':          median = ACE_OS::atoi (options.optarg);          break;        case 'x':          maximum = ACE_OS::atoi (options.optarg);          break;        case 'n':          number = ACE_OS::atoi (options.optarg);          break;        default:          break;        }    }  char filename[1024];  const char *seventyfive_bytes = "\01010101010101010101010101010101010101010101010101010101010101010101010101\n\";  int seen_max = 0;  long i;  for (i = 0; i < number; i++)    {      long size = 0;      float p = ::floor (::pow (2, poidev (::log (2 * median)/::log (2)) - 1));      if (p > maximum)        p = maximum;      p *= 1024;      if (p < 1.0)        p = 1.0;      size = (long) p;      if (i == (number - 1))        if (! seen_max)          size = maximum * 1024;      else        seen_max = (size == (maximum * 1024));      ::sprintf (filename, "file%011ld.html", i);      FILE *fp = ::fopen (filename, "w+b");      while (size > 75)        {          fprintf (fp, "%s", seventyfive_bytes);          size -= 75;        }      if (size > 15)        {          fprintf (fp, "%0*.0f\n", (int) (size - 1), p);        }      else        {          fprintf (fp, "%015.0f\n", p + 16 - size);        }      fclose (fp);    }  return 0;}static floatgammln (float xx){  double x, y, tmp, ser;  static const double cof[6] = { 76.18009172947146,                                 -86.50532032941677,                                 24.01409824083091,                                 -1.231739572450155,                                 0.1208650973866179e-2,                                 -0.5395239384953e-5 };  int j;  y = x = xx;  tmp = x + 5.5;  tmp -= (x+0.5) * ::log (tmp);  ser = 1.000000000190015;  for (j = 0; j < 6; j++)    ser += cof[j]/++y;  return -tmp + ::log (2.5066282746310005 * ser / x);}static floatpoidev (float xm){  static const double PI = 3.141592654;  static float sq, alxm, g, oldm = -1.0;  float em, t, y, fem;  if (xm < 2.0)    {      if (xm != oldm)        {          oldm = xm;          g = ::exp (-xm);        }      em = -1.0;      t = 1.0;      do        {          ++em;          t *= (1.0 + ::rand ())/RAND_MAX;        }      while (t > g);    }  else    {      if (xm != oldm)        {          oldm = xm;          sq = ::sqrt (2.0 + xm);          alxm = log (xm);          g = xm * alxm - gammln (xm + 1.0);        }      do        {          do            {              y = ::tan (PI * (1.0 + ::rand ())/RAND_MAX);              em = sq * y + xm;            }          while (em < 0.0);          fem = ::floor (em);          t = 0.9 * (1.0 + y * y) * ::exp (fem * alxm - gammln (fem + 1.0) - g);        }      while ((1.0 + ::rand ())/RAND_MAX > t);    }  return em;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -