Generating Distributions for PC-PRB-301
This is the first confusing thing I have come across on this generator.
I want to generate a list of integers that sum to a particular integer. So far, I have decided this is the same as picking a random term in the expansion of $(x_1 + \dots + x_n)^k$.
The first thing I thought of doing was someting like this:
import Control.Monad
import Data.List
import Data.Random
import Data.Random.Extras
import Data.Random.Source.Std
-- settings
sampleSize = 5
decimalPlaces = 3
one = 10^decimalPlaces
target = one
pick :: Integer -> IO Integer
pick x = runRVar (choice [0..(x-1)]) StdRandom
countOfEach :: [Integer] -> [Int]
countOfEach = map (\x -> length x) . group . sort
makeList :: IO [Int]
makeList = fmap countOfEach $ sequence $ take one $ cycle [pick
sampleSize]
makeList
is now a vector of numbers that add up to what we want. The
problem is they are much too uniform.