亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? distributions.cpp

?? Distribution generator Here is a simple generator which can build some distributions with given pro
?? CPP
字號:
/*
  Copyright (C) 2003, Guillaume-Latapy - LIAFA (University of Paris 7)

  Disclaimer: this code is provided 'as-is', without any express or
  implied warranty. In no event will the authors be held liable for
  any damages arising from the use of this software.

  Permission is granted to anyone to use this code for any purpose,
  to alter it and redistribute it without restrictions. Just feel
  free to inform us if you plan to use it. If you face any problems
  or find any bug, please contact us using our webpage:
    http://www.liafa.jussieu.fr/~guillaume/

  --------------------------------------------------

  Various degree distribution generators.
*/

#include <math.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
using std::cout;
using std::cin;
using std::cerr;

#define UNIFORM  0
#define POWERLAW 1
#define POISSON  2

#define PI 3.141592654

void
usage(char *program_name, int status) {
  if (status == EXIT_SUCCESS)
    {
      cout << "Usage: " << endl
	   << program_name << " -u -m min -M max -n balls -s sum" << endl
	   << program_name << " -p exponent -m min -M max -n balls -s sum" << endl
	   << program_name << " -e mean -m min -M max -n balls -s sum" << endl
	   << "  Generates a random degree distribution for various laws." << endl
           << "  Graph is printed on stdout with one link (betwen top and bottom) per line." << endl
	   << "  Laws:" << endl
	   << "    -u: uniform law between m and M" << endl
	   << "    -p exponent: power law of given exponent (default: 1) between m and M" << endl
	   << "    -e mean: Poisson law of given mean (default: 1)" << endl
	   << "  Options:" << endl
           << "    -m: miminal value" << endl
           << "    -M: maximal value" << endl
           << "    -n: number of balls" << endl
           << "    -s: sum of ball values" << endl
           << "    -h, this usage" << endl
           << "Remarks:" << endl
           << "  If given sum of values is not consistent with the expected sum of values," << endl
	   << "  program might not end." << endl ;
    }
  else
    {
      cerr << "Try '" << program_name << " -h' for usage information." << endl;
    }
  exit(status);
}

void
parse_args(int argc, char **argv, int &law, int &m, int &M, int &n, int &s, float &p) {
  extern char *optarg;
  extern int optind, opterr, optopt;
  char c;

  while ((c = getopt(argc, argv, "m:M:n:s:p:e:uh")) != EOF){
    switch (c) {
    case 'h':       /* help */
      usage(argv[0], EXIT_SUCCESS);
      break;
    case 'm':       /* nb vertices */
      m=atoi(optarg);
      break;
    case 'M':       /* nb links */
      M=atoi(optarg);
      break;
    case 'n':       /* nb links */
      n=atoi(optarg);
      break;
    case 's':       /* nb links */
      s=atoi(optarg);
      break;
    case 'u' :
      law=UNIFORM;
      break;
    case 'p' :
      p=atof(optarg);
      law=POWERLAW;
      break;
    case 'e' :
      p=atof(optarg);
      law=POISSON;
      break;
    case ':':       /* missing operand */
      cerr << argv[0] << ": Option -" << optopt << " requires an operand." << endl;
      usage(argv[0], EXIT_FAILURE);
      break;
    case '?':       /* unknown option */
      cerr << argv[0] << ": Unrecognized option -" << optopt << endl;
      usage(argv[0], EXIT_FAILURE);
    }
  }
}

float gammaln(float xx) {
  double x,y , tmp, ser;
  static double cof[6]={76.18009172947146,-86.50532032941677,
			24.01409824083091,-1.231739572450155,
			0.1208650973866179e-2,-0.5395239384953e-5};
  
  y=x=xx;
  tmp=x+5.5;
  tmp -= (x+0.5)*log(tmp);
  ser=1.000000000190015;
  for (int j=0;j<5;j++)
    ser+=cof[j]/++y;
  return -tmp+log(2.5066282746310005*ser/x);
}

float
poisson(float xm) {
  static float sq, alxm, g, oldm=(-1.0);
  float em,t,y;

  if(xm<12.0) {
    if(xm!=oldm) {
      oldm=xm;
      g=exp(-xm);
    }
    em=-1;
    t=1.0;
    do {
      ++em;
      t*=(random()*1.)/(RAND_MAX*1.);
    } while (t>g);
  } else {
    if(xm!=oldm) {
      oldm=xm;
      sq=sqrt(2.0*xm);
      alxm=log(xm);
      g=xm*alxm-gammaln(xm+1.0);
    }
    do {
      do {
	y=tan(PI+(random()*1.)/(RAND_MAX*1.));
	em=sq*y+xm;
      } while (em<0.0);
      em=floor(em);
      t=0.9*(1.0+y*y)*exp(em*alxm-gammaln(em+1.0)-g);
    } while ((random()*1.)/(RAND_MAX*1.) > t);
  }
  return em;
}


int
myrandom(int law, int m, int M, float p) {
  if (law==UNIFORM) {
    return random()%(M-m+1)+m;
  } else   if (law==POWERLAW) {
    double r=(random()*1.)/(RAND_MAX*1.);
    double nexp=p+1.;
    double norm=1./(pow(M*1.0,nexp)-pow(m*1.0,nexp));
    double expo=log10(r/norm+pow(m*1.0, nexp))/nexp;
    return (int)floor(pow(10.,expo));
  } else { //  case POISSON:
    int val;
    do {
      val=poisson(p);
    } while (val<m || val>M);
    return val;
  }
}

vector<int> distrib(vector<int> v) {
  int m=0;
  for (int i=0; i<v.size() ; i++)
    m=max(m, v[i]);

  vector<int> d(m+1);
  for (int i=0; i<m+1 ; i++)
    d[i]=0;
  for (int i=0; i<v.size() ; i++)
    if (v[i]>=0)
      d[v[i]]++;
  return d;
}

int
main(int argc, char **argv) {
  srandom(time(NULL));

  int m=-1, M=-1, n=-1, s=-1, law=-1;
  float p=1.;

  parse_args(argc, argv, law, m, M, n, s, p);
  if (n<0 || m<0 || M<0)
    usage(argv[0], EXIT_FAILURE);
  
  vector<int> numbers(n);

  // generates numbers
  int current_sum=0;
  for(int i=0 ; i<n ; i++) {
    numbers[i]=myrandom(law, m, M, p);
    current_sum+=numbers[i];
  }


  int t=0;

  // match sum of balls with prescribed sum
  if(s>=0) {
    while(current_sum!=s) {
      t++;
      int new_ball = random()%n;
      current_sum -= numbers[new_ball];
      numbers[new_ball] = myrandom(law, m, M, p);
      current_sum += numbers[new_ball];
    }
  }

  //print distribution
  vector<int> degree_dist = distrib(numbers);
  for(int i=0;i<degree_dist.size();i++)
    cout << i << " " << degree_dist[i] << endl;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一级二级在线| www.日韩在线| 秋霞午夜鲁丝一区二区老狼| 亚洲自拍偷拍麻豆| 亚洲一区在线看| 亚洲一区二区三区视频在线| 一区二区三区四区不卡在线| 亚洲美女免费视频| 亚洲靠逼com| 一区二区三区高清| 亚洲一二三专区| 五月天激情综合| 青椒成人免费视频| 精品一区二区日韩| 国产传媒一区在线| 成人av电影免费观看| 99精品国产99久久久久久白柏| 北条麻妃一区二区三区| 91丨porny丨首页| 在线日韩一区二区| 777a∨成人精品桃花网| 欧美一区二区三区不卡| 精品裸体舞一区二区三区| 精品国产一区二区精华| 久久久另类综合| 国产精品国产三级国产三级人妇| 日韩理论电影院| 亚洲一区视频在线观看视频| 五月激情综合网| 激情综合五月婷婷| 成人精品一区二区三区中文字幕| 91污在线观看| 91精品国产欧美一区二区18| 精品久久久久久久久久久久包黑料 | 国产伦理精品不卡| 不卡av在线免费观看| 一本久道久久综合中文字幕| 欧美二区在线观看| 久久久久88色偷偷免费| 亚洲免费大片在线观看| 天天亚洲美女在线视频| 国产精品一线二线三线| 色婷婷亚洲精品| 欧美一区二区国产| 国产精品久久网站| 亚洲v中文字幕| 国产盗摄一区二区| 欧美伊人久久久久久久久影院| 欧美精品xxxxbbbb| 国产免费观看久久| 性欧美大战久久久久久久久| 国产精品一线二线三线| 欧美午夜理伦三级在线观看| 精品国产凹凸成av人导航| 亚洲欧美怡红院| 午夜久久电影网| 福利一区在线观看| 欧美丰满高潮xxxx喷水动漫| 国产欧美一区二区精品婷婷| 亚洲午夜羞羞片| 国产成人在线免费观看| 欧美艳星brazzers| 久久只精品国产| 亚洲国产色一区| 激情六月婷婷综合| 欧美日韩午夜在线| 国产精品久久久久久妇女6080| 日韩av在线发布| 日本久久一区二区| 久久精品欧美日韩| 免费在线观看不卡| 在线观看亚洲精品| 国产欧美一区二区在线观看| 日本在线不卡视频| 91成人国产精品| 国产日韩欧美精品电影三级在线| 日韩精品一级中文字幕精品视频免费观看 | 成人国产在线观看| 欧美岛国在线观看| 亚洲一区二区中文在线| 成人av动漫网站| 久久久久久久久伊人| 日韩福利电影在线观看| 色哟哟在线观看一区二区三区| 久久久国产精品不卡| 日韩高清电影一区| 欧美性生活大片视频| 亚洲欧美一区二区三区国产精品 | 色婷婷综合激情| 国产精品区一区二区三区| 韩国理伦片一区二区三区在线播放 | 日韩黄色一级片| 精品视频999| 一区二区三区在线免费视频| 成人免费视频一区| 亚洲国产精品黑人久久久| 激情偷乱视频一区二区三区| 日韩视频免费直播| 日韩精品免费专区| 欧美另类videos死尸| 亚洲一区在线观看免费| 91极品视觉盛宴| 亚洲欧美影音先锋| 91丨porny丨中文| 亚洲视频一二区| 91美女蜜桃在线| 亚洲视频每日更新| 日本高清不卡一区| 一区二区三区精密机械公司| 日本韩国精品在线| 亚洲国产精品久久一线不卡| 欧美亚洲免费在线一区| 亚洲国产一区二区在线播放| 在线精品视频小说1| 一级日本不卡的影视| 欧美在线一区二区三区| 香蕉久久夜色精品国产使用方法| 亚洲丝袜美腿综合| 色综合天天狠狠| 亚洲一区二区三区在线| 777a∨成人精品桃花网| 蜜臀av一区二区在线免费观看| 欧美一区二区三区四区视频| 美女诱惑一区二区| 久久久久久免费网| av福利精品导航| 亚洲一区二区三区三| 欧美精品电影在线播放| 久久97超碰色| 国产精品久久久久毛片软件| 91丨porny丨户外露出| 香蕉成人伊视频在线观看| 日韩欧美一区中文| 丁香婷婷综合色啪| 亚洲精选视频在线| 欧美老肥妇做.爰bbww| 狠狠色狠狠色综合| 最新日韩av在线| 欧美亚洲免费在线一区| 日本欧美在线观看| 国产午夜精品在线观看| 色妹子一区二区| 男女男精品视频| 国产精品成人在线观看| 欧美日韩高清不卡| 国产一区二区电影| 亚洲欧美另类久久久精品| 91麻豆精品国产综合久久久久久| 国内精品在线播放| 亚洲欧美激情视频在线观看一区二区三区 | 欧美日韩国产综合久久| 韩国v欧美v日本v亚洲v| 亚洲人成网站色在线观看| 日韩视频一区二区在线观看| 成人手机电影网| 日韩精品欧美精品| 中文字幕一区二区视频| 91精品国产高清一区二区三区蜜臀| 国产精品一区二区三区乱码| 亚洲无人区一区| 国产欧美一区二区精品久导航| 欧美日韩午夜影院| a在线欧美一区| 日本一区中文字幕| 亚洲美女视频在线观看| 久久―日本道色综合久久| 在线观看日韩av先锋影音电影院| 国产麻豆9l精品三级站| 香蕉影视欧美成人| 国产精品成人免费| 精品美女在线观看| 欧美日韩综合在线| www.亚洲在线| 激情久久久久久久久久久久久久久久| 一区视频在线播放| 久久久久97国产精华液好用吗| 欧美日韩精品一区二区三区蜜桃| 国产成人精品影视| 伦理电影国产精品| 亚洲 欧美综合在线网络| 成人免费在线视频| 久久久久88色偷偷免费| 日韩欧美一二区| 欧美日韩一区二区三区免费看| 粉嫩欧美一区二区三区高清影视| 免播放器亚洲一区| 性欧美疯狂xxxxbbbb| 亚洲精品视频在线观看网站| 国产欧美视频在线观看| 精品久久久久久综合日本欧美| 欧美日本高清视频在线观看| 色婷婷av一区二区三区软件| 大白屁股一区二区视频| 久久国产麻豆精品| 日韩一区精品字幕| 亚洲mv在线观看| 亚洲在线视频网站| 亚洲黄色小说网站| 一区精品在线播放| 国产精品对白交换视频|