[問題]這支程式是不是寫錯了

看板MATLAB作者 (小劉)時間8年前 (2016/06/10 16:25), 編輯推噓0(0011)
留言11則, 4人參與, 最新討論串1/1
以下是程式碼: 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://www.ptt.cc/bbs/MATLAB/M.1465547148.A.E95.html

06/10 16:58, , 1F
為什麼不用x=rand(1,1); y=1-x;
06/10 16:58, 1F

06/10 16:59, , 2F
你這裡寫錯的原因是第二次不見得加起來也是1
06/10 16:59, 2F

06/10 17:46, , 3F
因為我到時候想做的是不只有兩變數可能最多到九變數
06/10 17:46, 3F

06/10 17:47, , 4F
一樣每個變數的範圍是0~1 然後相加還是1
06/10 17:47, 4F

06/10 18:08, , 5F
隨機產生浮點數的相加要剛好等於一的機率很小吧...
06/10 18:08, 5F

06/10 18:11, , 6F
覺得你可以隨機產生九個數字 然後再用這九個數字當作權重
06/10 18:11, 6F

06/10 18:11, , 7F
把1分配給這九個數字
06/10 18:11, 7F

06/10 18:13, , 8F
a=rand(1,9) ; b=sum(a) ; a=a/b 則得到 sum(a) = 1
06/10 18:13, 8F

06/10 18:15, , 9F
有點像是把a這個向量做normalize的概念
06/10 18:15, 9F

06/11 16:22, , 10F
你應該用while吧。。
06/11 16:22, 10F

06/19 03:38, , 11F
已解決 感謝樓上的大家
06/19 03:38, 11F
文章代碼(AID): #1NMdcCwL (MATLAB)