【发布时间】:2020-10-11 19:34:23
【问题描述】:
我是 Haskell 的初学者,我正在尝试让神经元做到这一点,我需要为神经元的权重生成随机数,但我被困在随机函数中,它会引发无限循环 我不知道问题出在哪里,此外,当我在终端中询问编译时随机取 3 时,它总是给我相同的数字,我希望它每次取不同的随机数
l = [1,0,1,1,0,0,1,0]
toDec :: [Int] -> Float
toDec [] = 0
toDec (x:xs) = fromIntegral x+2*(toDec xs)
next :: [Int] -> [Int]
next xs = xs'
where xs' = v:(init xs)
v = xor (last xs) (xs!!4)
random :: [Float]
random = ran l
where ran l = ( (toDec l) / 255.0):(ran (next l))
-- simple neuron
data Neuron = Neuron [Float]
deriving (Read,Show)
n = Neuron (take 3 random)
【问题讨论】:
-
Haskell 是一种纯语言。这意味着一个函数的结果仅取决于它的参数,而不依赖于其他任何东西。如果您希望数字每次都不同,则需要给它某种种子作为参数,并使其每次都不同。
-
Haskell 是一种纯语言,恰好提供了相当不错的库来生成伪随机数。如果随机数的统计质量值得关注,这就是您想要使用的,而不是重新发明这些东西。例如,参见School of Haskell。注意:您的问题似乎定期以各种形式出现在 SO 中,例如 here。
标签: haskell deep-learning