#include <stdlib.h>
#include <math.h>
#include <sys/time.h>
#include<stdio.h>/*
蒙特卡罗方法简介
主要思想:计算一事件发生的次数,再通过这个发生次数除以总模拟次数。
zipf的具体体现:由P(r)=c/pow(k,a),其中c、a为参数,r为等级,P(r)为r等级出现的频率。因此上述代码中:
c/pow(i,A)为计算文件i被请求发生的次数,sum为所有文件被请求的次数。每个SBS中的文件被请求次数服从相同分布。
*/
const int R = 2000;  //数据元素, 有R个不同的频率, 数值越大,对应频率越小,逐渐趋于0
const double A = 1.25;  //定义参数A>1的浮点数, 后来测试小于1的,似乎也可以
const double C = 1.0;  //这个C是不重要的,一般取1, 可以看到下面计算中分子分母可以约掉这个Cdouble pf[R]; //值为0~1之间, 是单个f(r)的累加值void generate()
{double sum = 0.0;for (int i = 0; i < R; i++){         sum += C/pow((double)(i+2), A);  //位置为i的频率,一共有r个(即秩), 累加求和}for (int i = 0; i < R; i++){ if (i == 0)pf[i] = C/pow((double)(i+2), A)/sum;elsepf[i] = pf[i-1] + C/pow((double)(i+2), A)/sum;}}void pick(int n){srand(time(00)); //产生n个数for (int i = 0; i < n; i++){int index = 0;double data = (double)rand()/RAND_MAX;  //生成一个0~1的数while (data > pf[index])   //找索引,直到找到一个比他小的值,那么对应的index就是随机数了index++;printf("%d ", index);}printf("%s", "\n");
}int main(){generate();pick(1000);return 1;
}

采用蒙特卡罗方法生成zipf分布随机数据相关推荐

  1. 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)

    第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...

  2. 采用蒙特卡罗方法求解π值

    采用蒙特卡罗方法求解π值. Python 3.8.8版本. #----计算pi的值---- from random import random from math import sqrt from t ...

  3. 蒙特卡洛方法生成随机数_随机股票生成器—财务方面的蒙特卡洛模拟

    蒙特卡洛方法生成随机数 金融, 机器学习 (Finance, Machine Learning) In this article, I will focus on how to create a pr ...

  4. Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)

    1.代码 import java.io.Serializable; import java.util.NavigableMap; import java.util.Random; import jav ...

  5. python压力测试脚本_Python 脚本生成测试数据,随机数据,压力测试

    为了进行压力测试需要做几份大数据文件,根据表定义不同生成的文件的列数和类型也不同,分为 RandomName:随机长度的字符串最大长度通过参数指定 RandomIndex:打乱顺序的自增长序列 Ran ...

  6. 2.13生成可控的随机数据集合 模拟色子

    import pylab import randomSIZE = 10000 random.seed()real_rand_vars = []real_rand_vars = [random.rand ...

  7. MCMC 蒙特卡罗方法 (一)

    作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础.比如我 ...

  8. 机器学习知识点(三十五)蒙特卡罗方法

    强化学习中免模型学习采用蒙特卡罗方法去逼近最优解,那这种采样原理是怎样的呢? 1.蒙特卡罗思想 是一类随机方法的统称.这类方法的特点是,可以在随机采样上计算得到近似结果,随着采样的增多,得到的结果是正 ...

  9. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

最新文章

  1. 在Apache上隐藏服务器签名的方法
  2. 最邻近方法nn_【庖丁解牛】从零实现RetinaNet(七):使用分布式方法训练RetinaNet...
  3. 关于js中function(e) e的理解
  4. php 命名空间不能继承,PHP两个类使用同一个命名空间,无法相互调用
  5. 用计算机制作动画,如何使用制作工具制作一个简单的Flash动画-电脑自学网
  6. MAC 电脑里面的“其他”文件是什么占用了
  7. mapreduce实现矩阵相乘
  8. kaldi_源码笔记 thchs-30_data_prep
  9. 关闭windows端口的批处理命令
  10. 简单好听的id_这些女生王者id简单干净名字,不信你不心动!
  11. 北京内推 | 微软亚洲研究院智能多媒体组招聘CV/NLU/RL方向算法实习生
  12. 在鹅厂如何带薪刷视频?
  13. win10卸载python3
  14. 【CVPR2020 论文翻译】 | Explaining Knowledge Distillation by Quantifying the Knowledge
  15. 孙浩北大计算机,周耀山工作简报第53期——清华北大高材生黎明、孙浩在白河高级中学学法座谈会成功举行...
  16. 远程安装WMF5.1遇到的坑
  17. 黑马程序员——开发工具——Eclipse
  18. sklearn波士顿房价数据集——线性回归
  19. 【2021.01.04】事件
  20. 脚本一键部署 (DHCP、dns、pxe、raid、nfs+apache+expect、lvm、磁盘分区、监控资源)

热门文章

  1. 大数据Hadoop之——总结篇
  2. 基于STM32F103RCT6实现串口中断发送,使用环形队列
  3. 在idea中完成创建maven工程,搭建MVC框架并完成和servlet相似的操作
  4. java memcached清除,需要清除memcach缓存方能解决的几个报错
  5. Ubuntu服务器设置简体中文
  6. 解决MPx 无法在windows下运行
  7. 交联型金属卟啉基聚酰亚胺PPBPI-H)PPBP-Mn;PBP-Fe;PPBPI-Fe-CR;PPBPI-Mn-CR产品-齐岳供应
  8. 数据透视表的发明历史
  9. Linux进程内存分析pmap命令
  10. VMware安装虚拟机