首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在范围内创建随机数的简单分布图(java或javascript)

如何在范围内创建随机数的简单分布图(java或javascript)
EN

Stack Overflow用户
提问于 2015-12-08 09:14:02
回答 1查看 774关注 0票数 0

在我的简单应用程序中,我经常在给定的范围内选择一个随机数(0.~500000)。我需要一种在浏览器中可视化发行版的简单方法。所以输出选项是png,html/js,svg,ascii?

数据存储在一个简单的地图(番石榴的AtomicLongMap)索引->count中。我不需要任何选择。我只想看看分配的粗糙性质。一个专门用于可视化发行版的工具,可以直接与地图(或地图序列化到json)一起使用,这将是最好的选择。在json中,数据应该如下所示

代码语言:javascript
复制
{
   "0":6
   "1":3
   "2":4
   "3":0
   "4":2
}

(范围为0.4)

我首先看了jfreechart和google图表,因为我必须把我的地图转换成一种特殊的数据格式,我必须提供标签(我不需要任何标签)。几年前,我和Birt一起工作,但是对于我简单的需求来说,这也是非常复杂/过分的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-08 09:47:00

一种简单的方法是创建一幅图像,并为每一列绘制一条与每个随机数的高度相同的线。一个简单的java代码应该如下所示。

代码语言:javascript
复制
final int AmountNumbers = 1000;
final int MaxSize = 500000;

// create Random Numbers
Random rnd = new Random();
ArrayList<Integer> randomNumbers = new ArrayList<>();
for(int i = 0; i < AmountNumbers; i++)
    randomNumbers.add(rnd.nextInt(MaxSize));

// create picture
int width = AmountNumbers, height = 200;    
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D ig2 = bi.createGraphics();
ig2.setPaint(Color.red);

// draw lines for every number
for(int i = 0; i < AmountNumbers; i++){
    int rndNumber = randomNumbers.get(i);
    ig2.drawLine( i, rndNumber * height / MaxSize, i,  height); 
}

// save as png
ImageIO.write(bi, "PNG", new File("chart.PNG"));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34151955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档