楼主: 萧湘客
1240 3

[问答] 求助,帮我看看这个程序有什么问题。。感谢啦!! [推广有奖]

  • 0关注
  • 0粉丝

小学生

85%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
101 点
帖子
8
精华
0
在线时间
11 小时
注册时间
2011-4-16
最后登录
2015-11-1

楼主
萧湘客 发表于 2011-5-26 23:19:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
%常数a=0.5
syms x y f R R0 X a Y;
X=0;
a=0.5;
while X==0      %不满足条件时,转回,重新抽取随机数。
    u1=unifrnd(0,1,1);%在U(0,1)分布中抽取u1。
    R=unifrnd(0,1,1);%h(x)的逆变化满足U(0,1)分布,故先在U(0,1)分布中抽取R。
    R0=int(x^(a-1)/(1/a+1/exp(1)),0,1);%求出y=1时,R的值为R0,作为判断条件(由于H(y)是单调增的)。
    if('R<=R0')
       f=int(x^(a-1)/(1/a+1/exp(1)),0,y);
       Y=solve(f-R);
       Y=vpa(Y,4);
       if ('u1<=exp(-Y)')
         X=Y;
       else
         X=0;
       end;
    elseif('R>=R0')
         f=int(exp(-x)/(1/a+1/exp(1)),1,y)+R0;
         Y=solve(f-R);
         Y=vpa(Y,4);
         if ('u1<=Y^(a-1)')
            X=Y;
         else
             X=0;         
         end;
    end;
end
X   %为抽取的随机数
二维码

扫码加我 拉你入群

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

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

关键词:while FRN IFR 随机数 EXP 求助 程序 感谢

沙发
junuylia 发表于 2011-5-27 12:22:35
两个条件R<=R0和R>=R0不是exclusive的,有重叠 =
另外你这个程序现在是编译不通过还是结果不对?

藤椅
萧湘客 发表于 2011-5-27 13:54:57
a值变为0.3的时候会有复数出现。 2# junuylia

板凳
tulipsliu 在职认证  发表于 2011-5-28 12:50:08
3# 萧湘客 你这个是一个很好的问题。
做程序有两类错误;
一、语法错误,
二、逻辑错误。

第一类错误比较好找,通常MATLAB有很强的纠错功能。当然,其他语言编辑环境也有,比如JAVA的环境和C++(微软VC++)环境,都有语法错误提示功能。你的程序可以运行,第一类错误没有。

第二类错误,通常是逻辑错误。就是运算的结果和预期想要的不一致。这个在程序测试中,叫Debug吧。你的程序产生了bug。通常可以从几个方面纠正。
一个是重新设计算法,是算法错误引起的逻辑错误。一个是虽然语法没有错误,不过函数调用错误,在运行中产生了预期之外的逻辑性错误。
劳动经济学

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

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