ajuda para um scrip

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

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@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@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.

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@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@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@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@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.

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@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@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@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@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@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.

É 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@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@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 <35%208876-9187> (Oi) 35 9189-7272 <35%209189-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@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@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@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@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@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.

Obrigado, mas este x dá sempre zero! É 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@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@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@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@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@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@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@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@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.

Desculpe, desconsidere a mensagem anterior É 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@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@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@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@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@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@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@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@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.

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@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@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@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@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@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@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@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@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.

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@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@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@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@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@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@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@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@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@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@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.

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@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@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@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@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@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@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@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@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@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@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@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.

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@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@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@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@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@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@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@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@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@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@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@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@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@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.
participantes (4)
-
Crysttian Arantes
-
Gustavo Carvalho
-
Mauro Sznelwar
-
Rodrigo Coster