Random 如何生成坏随机数

Random 如何生成坏随机数,random,cluster-analysis,prng,data-generation,Random,Cluster Analysis,Prng,Data Generation,我肯定有人问过很多次相反的问题,但我找不到任何关于如何生成坏随机数的答案 我想写一个聚类分析的小程序,并想生成一些随机点进行测试。如果我只插入1000个随机坐标点,它们将分散在整个领域,这将使聚类分析毫无价值 有没有一种简单的方法来生成随机数来构建集群 我已经考虑过不是使用random()而是使用random()*random()来生成正态分布的数字(我想我是在堆栈溢出的某个地方读到的) 第二种方法是随机选取几个区域,在该区域再次运行点生成,这当然会在该区域生成一个簇 你有更好的主意吗?生成几个

我肯定有人问过很多次相反的问题,但我找不到任何关于如何生成坏随机数的答案

我想写一个聚类分析的小程序,并想生成一些随机点进行测试。如果我只插入1000个随机坐标点,它们将分散在整个领域,这将使聚类分析毫无价值

有没有一种简单的方法来生成随机数来构建集群

我已经考虑过不是使用
random()
而是使用
random()*random()
来生成正态分布的数字(我想我是在堆栈溢出的某个地方读到的)

第二种方法是随机选取几个区域,在该区域再次运行点生成,这当然会在该区域生成一个簇


你有更好的主意吗?

生成几个锚。真随机数。然后在它们周围产生噪音:

anchor+dist*(random()-0.5))


这将生成聚集数,这些聚集数将均匀分布在距离
dist

上。如果您有意生成结构良好的簇(而不是完全随机的簇),则可以将这两个簇合并以找到簇中心,然后在其周围以正态分布放置许多点

以及在笛卡尔坐标系(x,y)中工作;可以使用径向方法为特定簇分布点。选择一个随机角度(0-2PI弧度),然后选择一个半径。 请注意,由于周长与半径成比例,因此靠近中心的区域分布将更加密集-但每个特定半径的分布将是相同的。修改径向分布以生成更紧密的簇


或者,您也可以使用真实世界的衍生数据进行自然聚类的半随机点分布。最近我做了很多地理空间聚类分析。为此,我使用了真实世界的数据——zipcode质心(在城市周围形成自然集群);以及餐厅的位置。另一个建议是:你可以使用恒星目录或银河目录。

我的第一个想法是,你可以使用一个函数来实现你自己的目录,并对系数进行实验,直到你得到一个足够低的周期来满足你的需要。一个非常低的
m
系数应该可以做到这一点

我还喜欢您的第二个想法,即围绕几个预先选择的点运行一个好的RNG来创建集群。您可以使用此方法针对集群的特定区域,也可以随机生成这些区域。

  • 向模型中添加其他尺寸标注
  • 绘制不规则(即不平坦)表面
  • 在扩展空间中生成数字
  • 丢弃曲面一侧的所有编号
  • 从左侧的每个数字中,删除附加维度

也许我误解了,但gnu科学库(用c编写)中有许多分布,您不能从该库中的高斯/泊松等中选择坐标吗

它们也提供了一个链接泊松分布的简单示例

如果需要分布有界(例如y坐标不小于-1),则可以通过从gsl中的均匀分布进行拒绝采样来实现


祝福你,Tom

你说的:决定一个分布或集群,并用它作为概率密度函数生成随机数。这让我想起了我假设你在谈论这个问题:在谈论
random()*random()
时,OP没有说明他使用的环境,GNU许可证可能不适合他的项目。