java - 平面上均匀分布的点在 Java 中聚集,为什么?

标签 java random

我想在 *100 平面上生成均匀分布的圆/点/节点。为此,我在 java 中使用 Random() 方法。具体来说,我是通过以下方式进行的:

Random r1=new Random();
  for(int i=0;i<100;i++){
  x=100*r1.nextDouble();
  y=100*r1.nextDouble();
} 

但问题是,当我一遍又一遍地运行代码时,节点在平面上的间隔并不均匀,即存在集中的簇和一些未占用的空间 block 。

任何想法,建议将不胜感激。 下图显示了带有簇和空白的典型输出。圈子的数量只是圈子的ID。 enter image description here

最佳答案

如果你想让你的随机分布看起来更“均匀”,也就是说你想要更均匀地覆盖空间,你不能使用完全均匀的分布,因为它会包含“间隙”,正如@Adam 指出的那样。

您可以改用名为 Low-discrepancy sequence 的东西: Halton sequence例如,或 Sobol sequence .正如您在维基百科示例图片中看到的那样,它们避免了您在均匀分布时会遇到的集群和间隙。

关于java - 平面上均匀分布的点在 Java 中聚集,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19311886/

相关文章:

java - 并排放置按钮

c# - 将经典 ASP 随机数与 C# 随机数进行匹配

php - 从 mySQL 数据库显示单个值的更有效方法?

javascript - 在 JavaScript 中每隔一个空格插入随机数

objective-c - 如何在 Objective-C 中创建随机 float ?

java - 请帮助我的二维数组源代码

java - JBAS014360 : EJB 3. 1 FR 4.3.14.1 org.jboss.inspiration.InterceptorContext 上的并发访问超时

java - 使用 servlet 和 jsp 显示表格时出现问题

java - Google SafetyNet API JwsResult 是一个散列字符串而不是 JSON

javascript - 如何在 Foundation 5 的 Orbit Slider 中添加 RANDOM 设置?