Je suis nouveau à Haskell et je me demande comment/si je peux rendre ce code plus efficace et plus ordonné. Il semble inutilement long et désordonné.Amélioration du code pour générer une distribution
Mon script génère une liste de 10 moyennes de 10 retournements de pièces.
import Data.List
import System.Random
type Rand a = StdGen -> Maybe (a,StdGen)
output = do
gen <- newStdGen
return $ distBernoulli 10 10 gen
distBernoulli :: Int -> Int -> StdGen -> [Double]
distBernoulli m n gen = [fromIntegral (sum x)/fromIntegral (length x) | x <- lst]
where lst = splitList (randomList (n*m) gen) n
splitList :: [Int] -> Int -> [[Int]]
splitList [] n = []
splitList lst n = take n lst : splitList (drop n lst) n
randomList :: Int -> StdGen -> [Int]
randomList n = take n . unfoldr trialBernoulli
trialBernoulli :: Rand Int
trialBernoulli gen = Just ((2*x)-1,y)
where (x,y) = randomR (0,1) gen
Toute aide serait appréciée, merci.
désolé, je ne l'explique mal. J'essaie fondamentalement de créer les données pour établir la distribution normale standard. en retournant virtuellement une pièce (avec le résultat 1 ou -1) 10 fois, et en prenant la moyenne du résultat, on obtient -0.2. en faisant ce processus disons 1000 fois, nous pouvons tracer les résultats et leur fréquence et obtenir la distribution normale. J'essaie de créer une liste de doubles que je peux tracer pour dessiner cette distribution. – Ash
pour clarifier, le résultat de ce script pourrait être [0.2.0.0,0.0, -0.4,0.6,0.0, -0.2,0.2,0.4,0.0] – Ash