正态概率密度函数 - GSL 等价于 Haskell
Normal probability density function - GSL equivalent in Haskell
我正在尝试找到从正态分布中提取的最佳方法。我希望能够在 Haskell.
中使用正态概率密度函数(及其累积函数)
简单地说,我想在不使用 GSL 绑定的情况下使用 this page 上的功能...我正在努力寻找合适的包。你认为哪一个最好?
谢谢你,祝你有美好的一天!
我认为 statistics
包可以做你想做的事。查看 here 了解您可以使用发行版(pdf 等)做什么
ContGen
实例应该让您从分布中抽取随机数。
正态分布为here。
这是一个使用 random-fu:
的例子
import Data.Random -- for randomness
import Text.Printf -- for printf
import Data.Foldable -- for the for_ loop
-- pdf and cdf are basically “Distribution -> Double -> Double”
main = do
-- defining normal distribution with mean = 10 and variation = 2
let normal = Normal (10 :: Double) 2
-- CDF
for_ [0..10] $ \i ->
printf "cdf(%2d): %.4f\n" i (cdf normal (fromInteger i))
-- PDF
putStrLn "---"
for_ [0..10] $ \i ->
printf "pdf(%2d): %.4f\n" i (pdf normal (fromInteger i))
运行 它,您将看到以下输出:
cdf( 0): 0.0000
cdf( 1): 0.0000
cdf( 2): 0.0000
cdf( 3): 0.0002
cdf( 4): 0.0013
cdf( 5): 0.0062
cdf( 6): 0.0228
cdf( 7): 0.0668
cdf( 8): 0.1587
cdf( 9): 0.3085
cdf(10): 0.5000
---
pdf( 0): 0.0000
pdf( 1): 0.0000
pdf( 2): 0.0001
pdf( 3): 0.0004
pdf( 4): 0.0022
pdf( 5): 0.0088
pdf( 6): 0.0270
pdf( 7): 0.0648
pdf( 8): 0.1210
pdf( 9): 0.1760
pdf(10): 0.1995
这里有两个要点:
Normal
是定义分布的构造函数。还有其他的分布,比如Uniform
等。分布有不同的类型,但是都属于Distribution
class.
pdf
和cdf
是class方法,可以在很多分布上操作(也许不是全部,但是很多)。第一个参数是分布,第二个参数是 PDF/CDF 应该被评估的点。
我正在尝试找到从正态分布中提取的最佳方法。我希望能够在 Haskell.
中使用正态概率密度函数(及其累积函数)简单地说,我想在不使用 GSL 绑定的情况下使用 this page 上的功能...我正在努力寻找合适的包。你认为哪一个最好?
谢谢你,祝你有美好的一天!
我认为 statistics
包可以做你想做的事。查看 here 了解您可以使用发行版(pdf 等)做什么
ContGen
实例应该让您从分布中抽取随机数。
正态分布为here。
这是一个使用 random-fu:
的例子import Data.Random -- for randomness
import Text.Printf -- for printf
import Data.Foldable -- for the for_ loop
-- pdf and cdf are basically “Distribution -> Double -> Double”
main = do
-- defining normal distribution with mean = 10 and variation = 2
let normal = Normal (10 :: Double) 2
-- CDF
for_ [0..10] $ \i ->
printf "cdf(%2d): %.4f\n" i (cdf normal (fromInteger i))
-- PDF
putStrLn "---"
for_ [0..10] $ \i ->
printf "pdf(%2d): %.4f\n" i (pdf normal (fromInteger i))
运行 它,您将看到以下输出:
cdf( 0): 0.0000
cdf( 1): 0.0000
cdf( 2): 0.0000
cdf( 3): 0.0002
cdf( 4): 0.0013
cdf( 5): 0.0062
cdf( 6): 0.0228
cdf( 7): 0.0668
cdf( 8): 0.1587
cdf( 9): 0.3085
cdf(10): 0.5000
---
pdf( 0): 0.0000
pdf( 1): 0.0000
pdf( 2): 0.0001
pdf( 3): 0.0004
pdf( 4): 0.0022
pdf( 5): 0.0088
pdf( 6): 0.0270
pdf( 7): 0.0648
pdf( 8): 0.1210
pdf( 9): 0.1760
pdf(10): 0.1995
这里有两个要点:
Normal
是定义分布的构造函数。还有其他的分布,比如Uniform
等。分布有不同的类型,但是都属于Distribution
class.pdf
和cdf
是class方法,可以在很多分布上操作(也许不是全部,但是很多)。第一个参数是分布,第二个参数是 PDF/CDF 应该被评估的点。