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