On Thu, 8 May 2008, Madoc wrote:

Given a list of numbers, I want to modify each of those numbers by adding a
random offset. However, each such modified number shall stay within certain
bounds, given by the integers minValue and maxValue. After that, I want to
continue computation with the resulting list of type [Int]. But for
demonstration, I made a program that just prints out the list:


import IO; import Random

minValue = 0::Int
maxValue = 1000::Int

normalize a | a < minValue = minValue
           | a > maxValue = maxValue
           | otherwise = a


normalize = min maxValue . max minValue


modify a = do
 offset <- randomRIO(-100::Int, 100)
 return(normalize(a + offset))


Stay away from IO whereever possible, use randomR instead.
Say
  map normalize (zipWith (+) (randomRs (-100::Int, 100)) x)

http://haskell.org/haskellwiki/Humor/Erlkönig
http://haskell.org/haskellwiki/Things_to_avoid#Separate_IO_and_data_processing
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to