如何使用高斯分布在道路网络图中创建距离,最好用java模拟真实世界场景?

dbf7pr2w  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(327)

道路网络数据集由边和节点组成。我主要处理edges,它有(edges\u id,start\u node,end\u node,edges\u length)。为了模拟真实场景,我需要在Map上生成随机的道路对象,即兴趣点(poi)。poi将具有如下属性(object\u id,edge\u id,distance\u from\u start\u node,edge\u type[boolean])。现在为了生成10k的高斯分布的道路对象,我从整个边缘数据集中随机选择一条边缘,需要遍历10k次来生成这些道路对象,每次都选取高斯距离值。当我把平均值设为0时,我不知道应该用什么样的标准差?由于数据集的边长,我不能只使用任意的标准偏差值。有人能帮我生成一个服从高斯分布的随机双值吗?

watbbzwu

watbbzwu1#

正如您所知,nextgaussian从正态分布生成一个随机数,平均值为零,标准偏差为1。
这意味着你会有大量的负数从发电机里出来。负数在应用程序中可能没有意义。所以你应该计划好避开它们。
为什么不尝试这样的方法来获取随机数(未调试)

public static float nextDistance () {
  final double meanlength = 10.0;
  final double meanstdev  = 5.0;
  while (true) {
    double result = meanLength + (meanstdev * rnd.nextGaussian())
    if (result >= 0) return result;
  }

这将返回一个正距离值,平均值为10,标准偏差为±5.如果作为偏移和缩放的高斯查找结果为负,则此函数将重试。丢弃样本会稍微破坏你的随机性。但对于测试数据来说,这可能是可以的。
不过,我想知道您的应用程序是否应该使用泊松分布而不是高斯分布?这可能比高斯分布更能描述边缘长度的分布。也可以生成泊松随机数。

相关问题