Функционализация числового кода

Играя с F #, я пытаюсь думать о коде более функционально. Большая часть моей работы носит численный характер, поэтому я думаю, имеет ли смысл это перевоспитание. Является ли написание числового кода функциональным способом, как попытка вписать квадратный колышек в круглое отверстие, или это просто вопрос крутой кривой обучения независимо от приложения?

Например, давайте возьмем фрагмент, который демонстрирует слабый закон больших чисел:

open System
open System.IO
open System.Windows.Forms
open System.Windows.Forms.DataVisualization
open FSharp.Data
open FSharp.Charting
open FSharp.Core.Operators
open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.Random
open MathNet.Numerics.Distributions
open MathNet.Numerics.Statistics


let T = 1000

let arr1 = Array.init T (fun i -> float i*0.)
for i in 0 .. T-1 do
    arr1.[i] <- [|for j in 1..i do yield Exponential.Sample(0.1)|] |> Statistics.Mean

let arr2 = Array.init T (fun i -> float i*0.)
for i in 0 .. T-1 do
    arr2.[i] <- arr1.[1 .. i] |> Statistics.Mean

arr2 |> Chart.Line |> Chart.Show

Есть ли краткий функциональный способ выражения вышесказанного? Какую часть функциональной парадигмы можно включить в такую ​​работу?

Не уверен, что вопрос не по теме. Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос