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 <[email protected]> > ** > 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 <[email protected]>: > >> 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 <[email protected]> > >>> > >>> 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 <[email protected]> > >>>> > >>>> 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 <[email protected]> > >>>> 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 > >>>>> [email protected] > >>>>> 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 > >>>> [email protected] > >>>> 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 > >>> [email protected] > >>> 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 > >>> [email protected] > >>> 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 > >> [email protected] > >> 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 > >> [email protected] > >> 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 > > [email protected] > > 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 > [email protected] > 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 [email protected] 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.
