我正在尝试制作一个random列表并使用MathNet.Numerics将其转换为矢量。但我的F#Interactive返回(下面)而不是生成的值。以下是我的代码。
val cumRC:DenseVector
会期望返回这样的东西。
cumRC : float list =
[0.9888577146; 1.013791155; 0.9816407702; 0.9967110693; 1.000800844;
1.004584863; 0.999112488; 0.9908830826; 1.009421593; 1.00276232]
open MathNet.Numerics
open MathNet.Numerics.Distributions
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.LinearAlgebra.Double
open MathNet.Numerics.LinearAlgebra.Generic.FSharpExtensions
let genRandom count =
let rnd = Normal(0.0,1.0)
List.init count (fun _ -> 1.0 + rnd.Sample()/100.0)
let va = genRandom 10
let cumVa = List.scan (fun numbers n -> numbers * n) 1.0 va |> List.tail |> DenseVector.ofList
答案 0 :(得分:0)
我没有使用MathNet,但删除特定于该包的部件会产生预期的结果。因此剥离MathNet部分的代码是:
let rnd = new System.Random()
let genRandom count =
List.init count (fun _ -> rnd.Next())
let va = genRandom 10
let cumVa = List.scan (fun numbers n -> numbers * n) 1 va |> List.tail
产生:
val cumVa : int list =
[893568767; -84811745; 1485049601; -1376682691; -278974486; -902716576;
-1616974272; 1049846592; -1969542592; -2077634944]
所以最有可能看的是DenseVector的文档。一个快速的谷歌说它没有ofList功能。