4

我希望能够生成一个钟形曲线,用于游戏程序生成中的概率。例如,如果我想生成一个森林,我可以给它一个半径和强度,并制作一个正确形状的钟形曲线来给我是否应该放置一棵树的概率。我最终应该在中心有很多树,当你从中心接近半径距离时,它们会变得不那么频繁。

在使用正弦波之前,我做过类似的事情。但我不知道如何制作钟形曲线。这些方程式对我来说是希腊式的。我忘记了如何阅读它们,但无论如何它对计算机来说都是希腊语。

有人可以在 C# 中写下钟形曲线的方程(或者 python 将是我的第二选择)并可能解释一下吗?

4

1 回答 1

11

当然。

p(x) = exp(-(x-mu)^2/(2*sigma^2))/sqrt(2*pi*sigma^2)

钟形曲线也称为高斯概率分布。它基本上是将e乘以 x值的负平方的幂。剩下的就是确保它以 mu 为中心并缩放到您正在建模的特定问题的细节,并确保x的所有值的积分总和为 1。

要在 Python 中从此分布中生成随机样本,您可以执行以下操作:

import random

sample = random.gauss(mu, sigma)
# where mu is the center of the bell curve, and sigma is proportional to its "width"

如果你想要一个二维钟形曲线,很高兴知道你可以像上面一样分别找到XY值,并且二维图将是二维钟形曲线,其中中心的密度最高(mu_x, mu_y)

于 2013-09-13T01:24:48.557 回答