haskell duvida

voodum

Power Member
boas..tenho um problema na univ....nao sei como gerar 4 atributos aleatoriamente e depois devolvelos no ecra...tipo nao percebo nada de IO...alguem me pode dar umas dicas??? cumps
 
Sera mt dificil arranjar apoio aqui... Aposto k tas a fazer o mm trabalho k eu! E mt dificil trabalhar com a funcao Random em Haskell, ja k esta devolve sp IOs... Pods usar a funcao unsafePerformIO, mas o melhor k pods fazer e guardar numa variavel...
 
O melhor que tem a fazer é mesmo tentar perceber o monad IO, sem isso nunca perceberam o objectivo do trabalho e ficam mal preparados pro exame. Não sei quais os criterios de correcção do professor, mas com unsafepreformIO duvido que saia grande nota do trabalho, independentemente de conseguirem fazer o trabalho todo...
O livro do professor JBB e do JMV ajuda um bocado, mas o melhor é mesmo tirarem duvidas directamente com um docente. ;)

Se quizerem arriscar e aprender sozinhos procurem exemplos que usem:


do x <- bla bla bla
y <- bla bla bla
print x
return y

etc... onde "bla bla bla" retorna um IO ()
Atenção que é um exemplo teórico e obviamente que não é interpretado pelo ghc ou plo hugs.

Boa sorte.
 
Última edição:
Tenho o mesmo problema...

Eu tb tenho um trab para fazer k usa random e tive a tentar fazer kalker coisa, mas e impossivel...

Tenho k fazer um RPG e para ixo preciso de usar valores aleatorios... Mas meto la a funçao random e a randomRIO e diz k nao esta definida... usei tb o instance Random where.... Mas n deu...

Se alguem pudesse mandar aí uma programacao em haskell k gerasse valores aleatorios...
Para uma pessoa analisar, pk assim n vou la...
 
Com a função iterate conseguem fazer isso:

randoms :: [Int]
randoms = iterate f 1234
where
f x = (1343*x+997) `mod` 1001

randomList :: Int -> [Int]
randomList n = take n randoms

basta chamares a função randomList com o número de números aleatórios que queres e voilá, lista com números aleatórios.

cumprimentos.
 
Boas eu tb to a fazer o trabalho mas ja o acabei, estou nas perguntas de valorizaçao, alguem me sabe dizer cm é que eu faço para ter num fixeiro txt varias palavras e ele ir buscar para cada jogo 6 aleatoriamente?

obrigado
 
boas

basicamente o que tens de fazer é carregar um ficheiro para uma string. Assumindo que as palavras estão separadas por espaços usas uma outra função que procura pelas palavras pela ordem dos números aleatórios numa lista.
Por ex: pegas numa função recursiva, string com "A vida é como um livro que deve ser folheado página por página sem se consultar o índice" e uma lista de aleatórios com (1,2,4,7,9) e usas a função para procurar as palavras onde 1 corresponde a primeira palavra , 2 a segunda etc..

Pode ajudar ter a lista de aleatórios ordenada e talvez em vez de uma string ter uma lista de strings.
 
essa do random ate 6 é basica....
eu queria era uma que de um fixeiro externo txt retirasse aleatoriamente 6 palavras....

tou a ver.
pensa assim, do *ficheiro* nao vais conseguir extrair seis palavras aleatórias.
primeiro tens que ler o ficheiro para memória. vais obter uma string com todo o conteúdo do texto.

após isso, fazes uma função para separar as palavras, através de espaços, newlines (os chamados caracteres de whitespace). essa função deverá retornar um valor do tipo [String], em que cada String contém uma palavra.

a partir daí, penso que se torna mais fácil. escolhes vítimas aleatórias ao longo da array de strings (ou seja, do seu length).

cumprimentos.
 
Back
Topo