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

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(0);
    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 = 0;
        //对每个rank,计算对应的词频,计算总词频
        for (int i = 1; i <= size; i++) {
            //the frequency in position i
            div += (Constant / Math.pow(i, skew));
        }
        //计算每个rank对应的y值,所以靠前rank的y值区间远比后面rank的y值区间大
        double sum = 0;
        for (int i = 1; i <= size; i++) {
            double p = (Constant / Math.pow(i, skew)) / div;
            sum += p;
            map.put(sum, i - 1);
        }
        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(100,1.0);
        for (NavigableMap.Entry<Double, Integer> entry : z1.map.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }
    }
  }

原文地址:https://www.cnblogs.com/moonlightml/p/9982240.html

时间: 2024-10-12 11:54:49

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

Java生成jar包\打包\Export

本文介绍一下如何通过Eclipse将自己的项目打包成jar 1.项目上右键单击 Export 2.选择 Java - JAR file - [next >] 3.进入jar包的配置界面,在这里勾选你想导出的jar所包含的文件 Export generated class files and resources导出时包含class文件和其他资源资源 Export all output folders for checked projects导出时包含项目的所有文件夹 Export Java sou

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

http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280.html . Office2007与Office Open XML 在Office 2007之前,Office一直都是以二进制位的方式存储,但这种格式不易被其它软件拿来使用,在各界的压力下,MicroSoft于2005年发布了基于XML的ooxml开放文档标准.ooxml的xml schema强调减

Java生成XML文件

<Java眼中的XML ---文件写入> 四种方法用Java生成一个XML文件. 1.通过DOM方式生成XML文档 import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transfo

2016/1/14 java生成指定范围的随机数

java生成指定范围的随机数 1 package edu.sjtu.erplab.io; 2 3 import java.util.Random; 4 5 public class RandomTest { 6 public static void main(String[] args) { 7 int max=20; 8 int min=10; 9 Random random = new Random(); 10 11 int s = random.nextInt(max)%(max-min+

Java微信公众平台开发模式+自定义按钮源码

首先,想用开放模式需要先成为开发者.成为开发者有两种写法. 一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串: 二是:通过Servlet.doGet返回exhostr,给微信平台. 这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下: import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.ut

修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

折腾几天记载一下,由于项目实际需要,从edmx生成的实体类能自动继承自定义的基类,这个基类不是从edmx文件中添加的Entityobject. 利用ADO.NET C# POCO Entity Generator With WCF Support生成的tt文件(比如model.tt)中找到 partial class partial class 修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

Android Studio library R.java生成失败解决

今天在Android Studio里面创建library,library里有引用到一些资源,但是发现R一直引用不了.查看了下,build\generated\source\r\debug目录里面的R.java文件一直没有生成.谷歌许久,没有找到答案.最后自己找到了解决方案:菜单build->Make Module “yourLibrary”,然后发现R.java生成了,资源文件就可以引用了. 原文: http://blog.csdn.net/viviwen123/article/details/

Java Web总结十六之一自定义标签

一.自定义标签简介 1.为什么要使用自定义标签? 自定义标签主要用于移除Jsp页面中的<%java%>代码. 2.开发自定义标签的步骤: 1)开发自定义标签处理类,该类需要实现SimpleTag接口/SimpleTagSupport类,重写doTag()方法. 2)编写标签库描述符(tld)文件,在tld文件中对自定义标签进行描述,并放置在WEB-INF/目录下. 3)完成以上操作,即可在JSP页面中导入和使用自定义标签. 二.自定义标签描述 1.实现SimpleTag接口的标签通常称为简单标

Java生成并打印二维码

本次做订餐系统中,需要用到在Java生成二维码,并在jsp页面打印并输出,其中在action中生成二维码. 关键代码如下 1 public void reWeiMa() throws Exception{ 2 //设置页面不缓存 3 HttpServletResponse response = ServletActionContext.getResponse(); 4 HttpServletRequest quest = ServletActionContext.getRequest(); 5