#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. 关于C#写的记事本中一个问题
  2. 【AI-1000问】为什么深度学习图像分类的输入多是224*224
  3. 目前微型计算机的内存储量一般是多大的,微型计算机内存容量的大小一般是指什么而言...
  4. Windows 禁止mysql 自动更新
  5. python 数据分析实践--(1)收入预测分析
  6. 单反相机入门教程视频  从入门到精通(48集)
  7. 金融领域的知识图谱搭建简单实操(基于Neo4J)
  8. 高分辨透射电镜(HRTEM)样品怎么制?看这一篇就够了
  9. java applet介绍,applet java 介绍
  10. Innodb中的事务隔离级别和锁的关系
  11. Nmap下载和简单应用
  12. 虎牙直播弹幕抓取 相关资料整理
  13. Mybatis(1)——Mybatis Generator自动生成代码
  14. 看雪逆向-Security Documentation
  15. 【Linux 内核笔记】进程管理
  16. oracle 关于小数点为小数的格式化
  17. 加载linux驱动模块时,终端提示一堆内存错误
  18. 浅谈物联网安全威胁与挑战
  19. 华为1+X网络系统建设与运维(中级)—— 视频讲解汇总目录
  20. 我的第一个长程序,虽然是直接抄了书上,可是还是出现了两次拼写错误,最终还是找到异常的答案,改过来了。...

热门文章

  1. 为什么引入非线性激励函数?
  2. C语言 字节数组转为字符串
  3. Visual Question Answering: Datasets, Algorithms, and Future Challenges文章翻译
  4. Android 在分享列表添加自己的应用
  5. Android Handle用法
  6. Python读取Excel表格效率对比(openpyxl、xrld、csv)
  7. yolov5昆虫识别模型测试
  8. 【SQL注入17】绕过手法与防御
  9. 工具推荐 10款移动界面原型设计工具
  10. Mac 上 VMware 安装 win7 虚拟机如何添加磁盘