作者ljuyentintho (小刘)
看板MATLAB
标题[问题]我是不是写错了
时间Fri Jun 10 16:25:45 2016
以下是程式码:
x=rand(1,1);
y=rand(1,1);
n=x+y;
if n~=1
x=rand(1,1);
y=rand(1,1);
n=x+y;
end
我希望产生出的x跟y在0~1之间
然後n是x+y
如果n不等於1的时候重跑一次
说穿了就是希望随机产生一组x跟y
但x+y一定要等於1这样
可是我看我的output的n一直都不是1
是写错了还是忘了加什麽吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.250.43
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1465547148.A.E95.html
1F:→ celestialgod: 为什麽不用x=rand(1,1); y=1-x; 06/10 16:58
2F:→ celestialgod: 你这里写错的原因是第二次不见得加起来也是1 06/10 16:59
3F:→ ljuyentintho: 因为我到时候想做的是不只有两变数可能最多到九变数 06/10 17:46
4F:→ ljuyentintho: 一样每个变数的范围是0~1 然後相加还是1 06/10 17:47
5F:→ rex0707: 随机产生浮点数的相加要刚好等於一的机率很小吧... 06/10 18:08
6F:→ rex0707: 觉得你可以随机产生九个数字 然後再用这九个数字当作权重 06/10 18:11
7F:→ rex0707: 把1分配给这九个数字 06/10 18:11
8F:→ rex0707: a=rand(1,9) ; b=sum(a) ; a=a/b 则得到 sum(a) = 1 06/10 18:13
9F:→ rex0707: 有点像是把a这个向量做normalize的概念 06/10 18:15
10F:→ ts04953635: 你应该用while吧。。 06/11 16:22
11F:→ ljuyentintho: 已解决 感谢楼上的大家 06/19 03:38