• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Y_E_T_I

Numero aleatório

8 mensagens neste tópico

Boas ,

Ha alguma maneira de fazer uma funçao que dada uma lista devolva um numero aleatória dessa lista mas sendo a funçao do tipo 

escolhe :: [int] -> Int 

?

É que eu fiz assim

escolhe  a = do {r <- randomRIO (1, length a)
                ; return $ a !! (r - 1)
                }

mas isto é do tipo

escolhe :: [a] -> IO a 

...

Podem ajudar?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu queria algo parecido. Se bem percebi...

Dado a lista por exemplo:

[1,2,3,4]

que me desse a lista:

[4,1,2,3] ou [1,4,3,2] ... desde que não viesse igual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para usares a função que gera números aleatório, não tens outra opção.

Há uma função que permite remover o IO, não entanto, não acho boa prática utilizá-la, e este é um caso em que daria problemas, pois com um pouco de sorte, ia passar a devolver sempre o mesmo número aleatório.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para usares a função que gera números aleatório, não tens outra opção.

Há uma função que permite remover o IO, não entanto, não acho boa prática utilizá-la, e este é um caso em que daria problemas, pois com um pouco de sorte, ia passar a devolver sempre o mesmo número aleatório.

eu gostava de saber como retirar o IO tenho uma funçao que devolve um (IO a) queria ler como Int

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

randomSimples :: Int -> IO Int

randomSimples x = randomRIO(1,x)

E onde queres chamar o número aleatório,

Um_numero_aleatorio <- randomSimples 5

o read do IO Int é efectuado e podes trabalhar o valor de imediato...

Simple as that, bom trabalho :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora