楼主: eliza943
5663 11

[问答] 【已解决】非常用R模拟生成(0,1)随机数计算积分过程中if语句有问题,请问有谁可以帮 [推广有奖]

  • 0关注
  • 0粉丝

高中生

0%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
703 点
帖子
24
精华
0
在线时间
12 小时
注册时间
2012-2-15
最后登录
2014-1-8

楼主
eliza943 发表于 2012-12-9 20:43:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
非常感谢帮忙的人!m<(_ _)>m

程序如下:
u=runif(1000)
v=runif(1000)
if v<=u  y==0
else y==1
s=sum(y*exp(-((1/u)+(1/v)-2))*(1/(u*v)^2))/1000
s


显示结果如下:(就是错误的地方不知道如何改……)
> u=runif(1000)
> v=runif(1000)
>
> if v<=u  y==0
错误: 意外的符号在"if v"里
>
> else y==1
错误: 意外的'else'在"else"里
> s=sum(y*exp(-((1/u)+(1/v)-2))*(1/(u*v)^2))/1000
> s
[1] 0.503547

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:随机数 已解决 else 非常感谢 Run 积分 计算

沙发
TaskShare 发表于 2012-12-9 22:40:05
我没学过R语言,但是,据我对某些语言的了解(抱歉,基本是瞎猜),可能可以考虑检查:
- 可能if后面要有(),即 if(。。。)。。。
- 你的那两句中有,y==0  y==1。但这些语句似乎是比较语句,不是赋值语句,而你似乎想赋值。所以,可能也是错误原因
已有 1 人评分热心指数 收起 理由
jmpamao + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

藤椅
qoiqpwqr 发表于 2012-12-10 00:57:06
TaskShare 发表于 2012-12-9 22:40
我没学过R语言,但是,据我对某些语言的了解(抱歉,基本是瞎猜),可能可以考虑检查:
- 可能if后面要有( ...
正解! 还有就是if后面的判断语句要加括号if (....)

板凳
eliza943 发表于 2012-12-10 20:52:45
TaskShare 发表于 2012-12-9 22:40
我没学过R语言,但是,据我对某些语言的了解(抱歉,基本是瞎猜),可能可以考虑检查:
- 可能if后面要有( ...
谢谢你啦

报纸
eliza943 发表于 2012-12-10 20:56:18
qoiqpwqr 发表于 2012-12-10 00:57
正解! 还有就是if后面的判断语句要加括号if (....)
但是我改成下面这样子还是有错。说是长度出了问题,是不是u,v个包含1000个数,所以下面的用期望求积分的式子不能进行呢?难道需要把每个u,v后加上?谢谢

u=runif(1000)
v=runif(1000)
if(v<=u){
y=0}else{
y=1}
s=sum(y*exp(-((1/u)+(1/v)-2))*(1/(u*v)^2))/1000
s

地板
kaifengedu 发表于 2012-12-10 21:39:36
eliza943 发表于 2012-12-10 20:56
但是我改成下面这样子还是有错。说是长度出了问题,是不是u,v个包含1000个数,所以下面的用期望求积分的式 ...
貌似这样就可以吧:
u=runif(1000)
v=runif(1000)
y=as.numeric(v>u)
s=sum(y*exp(-((1/u)+(1/v)-2))*(1/(u*v)^2))/1000
s

7
jmpamao 发表于 2012-12-10 21:50:26
u=runif(1000)
v=runif(1000)
y[v<=u] =0
y[v>u]=1
s=sum(y*exp(-((1/u)+(1/v)-2))*(1/(u*v)^2))/1000
s

8
eliza943 发表于 2012-12-10 22:05:12
jmpamao 发表于 2012-12-10 21:50
u=runif(1000)
v=runif(1000)
y[vu]=1
非常感谢你o<(=* ̄▽ ̄*=)>ゞ

9
eliza943 发表于 2012-12-10 22:07:28
kaifengedu 发表于 2012-12-10 21:39
貌似这样就可以吧:
u=runif(1000)
v=runif(1000)
谢谢O(∩_∩)O。我还想问一下,y的赋值那个不是格式转换吗?在你写的程序里是什么意思呢?

10
jmpamao 发表于 2012-12-10 22:14:17
他的意思 是 逻辑 F为0, T为1

如果要 y=2 那就不行了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 06:08