Ir para o conteúdo
Y_E_T_I

Numero aleatório

Mensagens Recomendadas

Y_E_T_I    0
Y_E_T_I

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nram    0
nram

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Jpab    0
Jpab

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Arnax    0
Arnax

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade