#include<cmath> //exp
#include<cstdlib> //rand_max, rand()
#include<ctime> //time()
#include<vector>
#include<random>
/*
* timing util
* */
#include <chrono>
#include <iostream>
#define TIK(name) auto __FILE__##name##_begin = std::chrono::high_resolution_clock::now()
#define TOK(name) auto __FILE__##name##_end = std::chrono::high_resolution_clock::now(); \
double __FILE__##name##_ms = std::chrono::duration_cast<std::chrono::milliseconds>(__FILE__##name##_end - __FILE__##name##_begin).count(); \
std::cout << "[Timer][" <<__FILE__<<"]["<<#name<<"][" <<__FILE__##name##_ms <<"][ms]"<<std::endl
#define EXP_1 0.367879441
//reverse distributed function
inline double possion_pdf(int k){
double pdf = 1.0;
for(int i=1;i<=k;i++){
pdf /= static_cast<double>(i);
}
//return p*exp(-lambda);
return pdf*EXP_1;
}
int rand_possion_1(){
double u = static_cast<double>(rand())/RAND_MAX;
int x = 0;
//double cdf = exp(-lambda);
double cdf = EXP_1;
while(u >= cdf){
x++;
// std::cout << "bug, u=" << u << ", cdf=" << cdf <<", x=" << x << std::endl;
cdf +=
[算法与数据结构][随机数]泊松分布随机数生成的4种方法
最新推荐文章于 2021-05-25 05:08:19 发布
本文探讨了四种生成泊松分布随机数的方法,详细介绍了每种方法的原理和实现,帮助理解泊松分布及其在计算机科学中的应用。
摘要由CSDN通过智能技术生成