1.代码

import java.io.Serializable;
import java.util.NavigableMap;
import java.util.Random;
import java.util.TreeMap; public class Zifp_gen implements Serializable {
private Random random = new Random();
NavigableMap<Double, Integer> map;
private static final double Constant = 1.0; public Zifp_gen(int nums, double skewness) {
// create the TreeMap
map = computeMap(nums, skewness);
}
//size为rank个数,skew为数据倾斜程度, 取值为0表示数据无倾斜,取值越大倾斜程度越高
private static NavigableMap<Double, Integer> computeMap(
int size, double skew) {
NavigableMap<Double, Integer> map =
new TreeMap<Double, Integer>();
//总频率
double div = ;
//对每个rank,计算对应的词频,计算总词频
for (int i = ; i <= size; i++) {
//the frequency in position i
div += (Constant / Math.pow(i, skew));
}
//计算每个rank对应的y值,所以靠前rank的y值区间远比后面rank的y值区间大
double sum = ;
for (int i = ; i <= size; i++) {
double p = (Constant / Math.pow(i, skew)) / div;
sum += p;
map.put(sum, i - );
}
return map;
} // public int next() { // [1,n]
// double value = random.nextDouble();
// //找最近y值对应的rank
// return map.ceilingEntry(value).getValue() + 1;
// } }

2.test

import java.util.NavigableMap;
public class Test {
public static void main(String args[]){
Zifp_gen z1=new Zifp_gen(,1.0);
for (NavigableMap.Entry<Double, Integer> entry : z1.map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
}
}

原Zipf齐夫分布及Java实现

zipf数据写入外部文本

public class Test {
public static void main(String args[]) throws IOException{
Zifp_gen z1=new Zifp_gen(100,0.5);
PrintWriter pw=new PrintWriter(new FileWriter("F:\\zipf_100_0.5.txt"));
for (NavigableMap.Entry<Double, Integer> entry : z1.map.entrySet()) {
// System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
// String str="Key = " + entry.getKey() + ", Value = " + entry.getValue();
String str= entry.getKey() + " " ;
pw.println(str);
}
pw.close();
}
}

Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)的更多相关文章

  1. PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...

  2. Java生成短链接

    为什么要生成短链接 微博之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少. 那么使用短链接的作用有哪些呢?1.字数,2.统计,3.监控,4.过滤 ...

  3. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  4. java 生成二维码、可带LOGO、可去白边

      1.准备工作 所需jar包: JDK 1.6: commons-codec-1.11.jar core-2.2.jar javase-2.2.jar JDK 1.7: commons-codec- ...

  5. 使用Java生成word文档(附源码)

    当我们使用Java生成word文档时,通常首先会想到iText和POI,这是因为我们习惯了使用这两种方法操作Excel,自然而然的也想使用这种生成word文档.但是当我们需要动态生成word时,通常不 ...

  6. springboot搭建项目,实现Java生成随机图片验证码。

    这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 首先创建一个springboot项目以下是项目结构,内有utli工具类.存放生成图片验证码方法 ...

  7. JAVA生成EXCEL模板

    JAVA生成excel模板,支持1.必填字段前加 红色 * 2.定义可选值下拉列表 valList3.定义名称并通过名称设置可选值 refName(名称在sheet2,sheet2自动隐藏)4.支持设 ...

  8. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  9. 利用JAVA生成二维码

    本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...

随机推荐

  1. npm --- Node.js包管理器

    目录 1. 安装Node.js 2. 运行npm 3. npm介绍 3.1 安装插件 3.2 更新插件 3.3 卸载插件 3.4 查看当前目录中的插件列表 4. 使用cnpm 4.1 安装 npm( ...

  2. PHP多种序列化/反序列化的方法 json_encode json_decode

    序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. 1. serialize和 ...

  3. HrrpClient使用

    使用HttpClient获取网页内容的过程 1.创建一个CloseableHttpClient类的实例: 2.使用这个实例执行HTTP请求,得到一个HttpResponse的实例: 3.最后,通过Ht ...

  4. c++重载输入输出运算符

    1 最好打断点看看哦 2例子 #include <iostream> using namespace std; class Complex2 { public: Complex2(, ) ...

  5. MessageFomat学习

    MessageFomat 提供了一种以与语言无关的方式生成连接消息的方法. 用它来构造消息,显示给最终用户. 1.MessageFormat的格式 MessageFormatPattern:Forma ...

  6. POJ3020【二分匹配】

    思路: ---说给自己 一开始想的是从1-h*w标记整幅图,建图是星号和 {他,与他相连的星号} 建边,肯定要去匹配"*"啊,所以空格一定不会去造,然后就理解成了最小点覆盖,然而对 ...

  7. Lightoj1011【KM算法】

    题意: 问男孩女孩最大的可能值?其实就是一个二分图的最大权值匹配问题:模板题吧.. #include<cstdio> #include<math.h> #include< ...

  8. spring boot 使用Schedule创建轻量级定时任务

    Scheduled SpringBoot配置定时任务可以直接使用自带的Scheduled,这相当于一个轻量级的Quartz,它可以让我们直接使用注解来完成定时任务的配置. Scheduled调度时间设 ...

  9. C++函数调用过程深入分析

    http://blog.csdn.net/dongtingzhizi/article/details/6680050 0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一 ...

  10. OPENGL1_环境

    补充说明: 1 vs2010自带opengl的库,不需要单独下载或做任何配置,(但是lib文件,dll文件放的位置过于分散,用的时候感觉不好用) 使用时直接用 #include <gl/GL.h ...