楼主: whymath
1269 7

[技术讨论与投票] 我的程序错在哪里? [推广有奖]

  • 1关注
  • 16粉丝

实习版主

已卖:43份资源

副教授

21%

还不是VIP/贵宾

-

威望
0
论坛币
5811 个
通用积分
708.0583
学术水平
126 点
热心指数
145 点
信用等级
88 点
经验
22480 点
帖子
581
精华
2
在线时间
608 小时
注册时间
2018-5-31
最后登录
2025-10-29

楼主
whymath 发表于 2021-3-21 23:10:14 |AI写论文
100论坛币
一根长度为1的木棒,随机的砍成三段,问这三段小木棒能组成三角形的概率是多少?

一顿计算之后我给出了更具体的算式。设三个小木棒长分别为a, b, 1-a-b,则有:
a < 0.5
b < 0.5
a + b > 0.5
根据以上不等式我设计了SAS程序进行模拟实验,程序如下:
  1. data _null_;
  2.   do while(tot<10000000);
  3.     tot + 1;
  4.     a = rand('uniform',0,1);
  5.     b = rand('uniform',0,1-a);
  6.     if round(a-.5,1e-6)<0 and round(b-.5,1e-6)<0 and round(a+b-.5,1e-6)>0 then success + 1;
  7.   end;
  8.   rst = success/tot;
  9.   put rst = ;
  10. run;
复制代码
以上程序我运行了10次,均值约为0.193,也就是说,我给出的答案是19.3%。
但多处参考资料都显示答案应该为25%。请问我错在哪里了?
参考资料:
https://zhidao.baidu.com/question/2202757272648921548.html
https://tieba.baidu.com/p/558745104?red_tag=0436676532
https://iask.sina.com.cn/b/1SSMkpOLa36T.html
https://www.bilibili.com/video/av58163033

关键词:sas程序 while null Data TOT

沙发
jg.sas 发表于 2021-3-23 11:58:36
  1. run;
复制代码

藤椅
whymath 发表于 2021-3-25 12:19:25
jg.sas 发表于 2021-3-23 11:58
您好,你的答案显示不全,可以再发一次吗。

板凳
jg.sas 发表于 2021-3-25 15:39:21
whymath 发表于 2021-3-25 12:19
您好,你的答案显示不全,可以再发一次吗。
我发错了,暂时也没看出来错在哪

报纸
jg.sas 发表于 2021-3-25 15:40:35
尝试将这些点画在三维空间里,可能会发现问题在哪

地板
缘oO来如此0o 发表于 2021-3-25 22:22:10
[img]两点
1   b = rand('uniform',0,1-a);
    你可以看一下b的分布。不是均匀分布。应该改成这样。
    b = rand('uniform',0,1);
2  除数就不能为 10000000了
    if a+b<1 then total+1;

7
whymath 发表于 2021-3-26 21:58:10
缘oO来如此0o 发表于 2021-3-25 22:22
两点
1   b = rand('uniform',0,1-a);
    你可以看一下b的分布。不是均匀分布。应该改成这样。
您好,我原来设置“b = rand('uniform',0,1-a);”,是希望b为(0,1-a)区间上的均匀分布,我查了帮助手册,也查看了数据,并没有发现它不是均匀分布啊?

8
缘oO来如此0o 发表于 2021-3-27 13:58:36
如图B的分布。 a = rand('uniform',0,1);这是均匀分布

b = rand('uniform',0,1-a); 如果a是定量,那他也是均匀分布。
现在a是变量,比如a=0.5, b是0--0.5的均匀分布
再比如a=0.1,那么b就是0-0.9的均匀分布。
整体看来,还是均匀分布么? 不是均匀分布,你的统计意义就不对了吧。




分布.jpg (21.83 KB)

分布.jpg

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 21:39