나는 Bit
의 목록을 가지고 무작위 목록을 사용하여 원본을 변경할지 여부를 결정하려고합니다. (그렇지 않으면, 분명히하시기 바랍니다.)
channel :: Int -> Float -> [Bit] -> [Bit]
channel seed noise xs = zipWith (alterBit noise) (randomFloatList seed) xs
공지 사항 당신이 괄호의 일부를 필요로하지 않았다 - 당신은 그룹에 대한 기능을 응용 프로그램에 괄호가 필요하지 않습니다. 이 기능을이 수레와 비트의 목록에서 필요로하는 단일 요소를 보내드립니다 zipWith
-
alterBit :: Float -> Float -> Bit -> Bit
alterBit noise random bit | random <= noise = alter bit
| otherwise = bit
다시 말하지만, 나는 이것을 사용하고 목록에 대한 참조를 제거했습니다.
내가
data Bit = O | I deriving Show
를 정의하는 자유를 가져다가 단 하나 개의 ALTER 기능을 생각할 수 :
alter :: Bit -> Bit
alter O = I
alter I = O
하는 현실을 테스트하자
> take 6 $ randomFloatList 3
[0.10321328,0.98988104,0.46191382,0.8553592,0.7980472,0.35561606]
> map (<= 0.5) $ take 6 $ randomFloatList 3
[True,False,True,False,False,True]
> channel 3 0.5 [O,O,O,O,O,O]
[I,O,I,O,O,I]
그래, 그 사람을 변화 그것은해야한다.
우리는 어떤 어려움에 대해 이야기하고 있습니까? 무엇이 실패하는지 판단 할 수있는 코드를 더 제공하십시오. – ljedrz