[R-br] ajuda para um scrip
Rodrigo Coster
rcoster em gmail.com
Quarta Agosto 24 11:09:57 BRT 2011
Quando eu falei pra usar while e nao for nao era pra simplesmente trocar um
pelo outro e torcer pra dar certo, tem que mudar a lógica do código...
A idéia que tu quer é ir gerando numero aleatórios (1 de cada vez) até que o
produto deles seja menor que exp(-lambda), e tu ta gerando logo de cara 100
numeros e vendo se a soma é menor que exp(-lambda).
[]'s
2011/8/24 Mauro Sznelwar <sznelwar em uol.com.br>
> **
> Como faz para executar?
> >O código dentro do while não está sendo executado:
> >
> >> exp(-2)
> > [1] 0.1353353
> >> sum(runif(100))
> > [1] 53.06867
> >
> > logo sum(u)<c dificilmente vai dar TRUE e n vai continuar sendo 1, o
> > que faz com que x = n - 1 = 0.
> >
> > 2011/8/24 Mauro Sznelwar <sznelwar em uol.com.br>:
> >> Por que o X dá sempre zero, mesmo que eu substitua o lambda por qualquer
> >> valor? Onde estou errando?p=1
> >> n=0
> >> lambda=2
> >> c=exp(-lambda)
> >> u=runif(100)
> >> p=p*u
> >> n=1
> >> #while (p<c){ u=runif(100);n=n+1}
> >> #p
> >> while (sum(u)<c){ u=runif(100);n=n+1}
> >> u
> >> x=n-1
> >> x
> >>
> >> É só trocar o nome das variaveis (na verdade nem precisava trocar, era
> só
> >> adicionar x<-n-1 no final)...
> >> ## Gera 'batata' até que a soma seja 1.5
> >> batata <- runif(2)
> >> batata
> >> n<- 1
> >> while (sum(batata) < 1.5) { batata <- runif(2) ; n <- n+1 }
> >> batata
> >> x<-n-1
> >> 2011/8/23 Mauro Sznelwar <sznelwar em uol.com.br>
> >>>
> >>> Muito obrigado pela dica. Mas como fica o faça X=N-1
> >>>
> >>>
> >>>
> >>>
> >>> for não é para isso, da uma olhada no while
> >>> Exemplo basico:
> >>> ## Gera X até que a soma deles seja 1.5
> >>> x <- runif(2)
> >>> x
> >>> n<- 1
> >>> while (sum(x) < 1.5) { x <- runif(2) ; n <- n+1 }
> >>> x
> >>> n # numero de tentativas
> >>>
> >>>
> >>> 2011/8/23 Crysttian Arantes <crysttian em gmail.com>
> >>>>
> >>>> Olá,
> >>>>
> >>>> O problema está na funcao runif(0).
> >>>>
> >>>> O zero indica que o numero de valores uniformes que ele tem que gerar
> é
> >>>> zero, coloca 1.
> >>>>
> >>>> runif(1): gera 1 valor
> >>>> runif(2): gera 2 valores
> >>>>
> >>>> Entendeu:
> >>>>
> >>>> Até
> >>>>
> >>>>
> >>>>
> >>>> Crysttian Arantes Paixão
> >>>> Universidade Federal de Lavras - UFLA
> >>>> Cel: 35 8876-9187 (Oi)
> >>>> 35 9189-7272 (Tim)
> >>>> Linux User: 456734 - Debian
> >>>>
> >>>> “Se fiz descobertas valiosas, foi mais por ter paciência do que
> qualquer
> >>>> outro talento.” [Isaac Newton]
> >>>>
> >>>> "Otimismo é esperar pelo melhor. Confiança é saber lidar com o pior."
> >>>> [Roberto Simonsen]
> >>>>
> >>>> "Mesmo as noites totalmente sem estrelas podem anunciar a aurora de
> uma
> >>>> grande realização." [Martin Luther King]
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> Em 23 de agosto de 2011 22:59, Mauro Sznelwar <sznelwar em uol.com.br>
> >>>> escreveu:
> >>>>>
> >>>>> Tenho este algoritmo
> >>>>>
> >>>>> p=1, N=0, c=e^-lambda
> >>>>>
> >>>>> Repita
> >>>>>
> >>>>> N=N+1
> >>>>>
> >>>>> gere Ui
> >>>>>
> >>>>> atualize p<c.e^-lambda
> >>>>>
> >>>>> Faça X=N-1
> >>>>>
> >>>>>
> >>>>> Estou fazendo esta rotina abaixo, mas o resultado não está
> consistente!
> >>>>> Qual o melhor jeito?
> >>>>> p=1
> >>>>> n=0
> >>>>> lambda=2
> >>>>> c=exp(-lambda)
> >>>>> for(n in 1:100){
> >>>>> u=runif(n)
> >>>>> p=p*u
> >>>>> p<c
> >>>>> }
> >>>>> x=n-1
> >>>>>
> >>>>> _______________________________________________
> >>>>> R-br mailing list
> >>>>> R-br em listas.c3sl.ufpr.br
> >>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >>>>> código mínimo reproduzível.
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> R-br mailing list
> >>>> R-br em listas.c3sl.ufpr.br
> >>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >>>> código mínimo reproduzível.
> >>>
> >>> ________________________________
> >>>
> >>> _______________________________________________
> >>> R-br mailing list
> >>> R-br em listas.c3sl.ufpr.br
> >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >>> código mínimo reproduzível.
> >>>
> >>> _______________________________________________
> >>> R-br mailing list
> >>> R-br em listas.c3sl.ufpr.br
> >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >>> código mínimo reproduzível.
> >>
> >> ________________________________
> >>
> >> _______________________________________________
> >> R-br mailing list
> >> R-br em listas.c3sl.ufpr.br
> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código
> >> mínimo reproduzível.
> >>
> >> _______________________________________________
> >> R-br mailing list
> >> R-br em listas.c3sl.ufpr.br
> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código
> >> mínimo reproduzível.
> >>
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110824/f03340fb/attachment.html>
Mais detalhes sobre a lista de discussão R-br