我想獲得一個函數,返回一列零或清單,顯然是以隨機的方式。數字列表的隨機二進制列表
例子:
getBinaryRandomList::Int->Int->[[Int]]
Prelude> getBinaryRandomList 4 3
[[1,0,0,1],[1,1,0,1],[0,0,0,1], [0,1,0,1]]
到目前爲止,我已經做到了這一點功能:
--tuns an `Int` into a `[Int]`. The [Int] would represent a binary number
int2bin :: Int -> [Int]
int2bin 0 = []
int2bin n = mod n 2 : int2bin (div n 2)
我已經來到這裏卡住了,它拋出在編譯時錯誤:
--returns a random number
import System.Random
randomInt::(Int,Int)->Int
randomInt x y = do
newStdGen
randomR(x, y) getStdGen
編譯...
[1 of 1] Compiling Main (ag.hs, interpreted)
ag.hs:8:25: parse error on input `randomR'
「主」功能會是這樣的:
--n lists number
--d digit number
getBinaryRandomList::Int->Int->[[Int]]
getBinaryRandomList d 0 = []
getBinaryRandomList d n = take d (int2bin(randomInt(0,50))) : getBinaryRandomList(n-1)
我的做法是下一個:
- 編碼創建0的n之間的偶然詮釋數的函數。
randomInt::(Int,Int)->Int
- 編碼,這些偶然的號碼轉換成二進制文件的列表的功能。
- 形成與這些數字
int2bin::Int->[Int] % Already done
getBinaryRandomList::Int->Int->[[Int]]
我怎麼能實現在Haskell的列表?
功能是確定性的,不能給你一個隨機值。你的'randomInt'操作需要一個種子,發生器或者擁有'IO'。 –