查看: 141|回復: 4|關注: 0
打印 上一主題 下一主題

[已解決] MATLAB怎么生成一組和為定值的隨機數

[復制鏈接]

新手

17 麥片

財富積分


050


6

主題

32

帖子

0

最佳答案
跳轉到指定樓層
1#
在做PSO的時候,粒子為(0,1)范圍且和為1的500維數組。求教怎么在初始時生成初始種群,并且怎么進行邊界處理。

MATLAB 基礎討論
版塊優秀回答者

中級

1056 麥片

財富積分


5001500


0

主題

1610

帖子

231

最佳答案
  • 關注者: 40
2#
發表于 2019-10-23 18:47:02 | 只看該作者 |此回復為最佳答案
Initial=rand(500,1);
Initial=Initial./sum(Initial);
這樣就好了,望設置為最佳答案!謝謝

新手

17 麥片

財富積分


050


6

主題

32

帖子

0

最佳答案
3#
 樓主| 發表于 2019-10-23 18:49:40 | 只看該作者
WarnerChang 發表于 2019-10-23 18:47
Initial=rand(500,1);
Initial=Initial./sum(Initial);
這樣就好了,望設置為最佳答案!謝謝 ...

謝謝啦,還有怎么進行邊界處理呢:loveliness:

MATLAB 基礎討論
版塊優秀回答者

中級

1056 麥片

財富積分


5001500


0

主題

1610

帖子

231

最佳答案
  • 關注者: 40
4#
發表于 2019-10-23 19:07:44 | 只看該作者
lwb19951228 發表于 2019-10-23 18:49
謝謝啦,還有怎么進行邊界處理呢

例如速度區間為[-0.5 0.5];
那么:
Initial(Initial<-0.5)=-0.5;
Initial(Initial>0.5)=0.5;
這樣就好了吧!

MATLAB 基礎討論
版塊優秀回答者

中級

1056 麥片

財富積分


5001500


0

主題

1610

帖子

231

最佳答案
  • 關注者: 40
5#
發表于 2019-10-23 19:07:47 | 只看該作者
本帖最后由 WarnerChang 于 2019-10-23 19:09 編輯
lwb19951228 發表于 2019-10-23 18:49
謝謝啦,還有怎么進行邊界處理呢

例如速度區間為[-0.5 0.5];
那么:
Initial(Initial<-0.5)=-0.5;
Initial(Initial>0.5)=0.5;
這樣就好了吧!


還有我用的rand函數全部生成的正數!
想生成負數:

Initial=1*rand(500,1)-0.5;這樣正負數就都有了!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關閉

站長推薦上一條 /3 下一條

快速回復 返回頂部 返回列表
哪一款德州扑克还能玩