フィルターのクリア

How to make 3 random numbers that sum to 1

33 ビュー (過去 30 日間)
Samual
Samual 2017 年 9 月 29 日
コメント済み: CLOUDY LU 2020 年 3 月 8 日
I'm trying to make two matrices for 6 random numbers, and the three different numbers of each need to sum up to 1. ex)P1+P2+P3=1 . How can I make this?? thanks. this is some part of my script file.
P1=rand(1,1)
P2=rand(1,1)
P3=rand(1,1)
Q1=rand(1,1)
Q2=rand(1,1)
Q3=rand(1,1)
if (P1+P2+P3==1) && (Q1+Q2+Q3==1)
%setting P, Q matrix
P=[P1 P2 P3];
Q=[Q1; Q2; Q3];

回答 (2 件)

Image Analyst
Image Analyst 2017 年 9 月 29 日
Did you try this:
r = rand(1, 3); % Start with 3 random numbers that don't sum to 1.
r = r / sum(r) % Normalize so the sum is 1.
theSum = sum(r) % Check to make sure. Should be 1
  3 件のコメント
krishna vasishta
krishna vasishta 2018 年 4 月 12 日
It works!! Many thanks!!!
CLOUDY LU
CLOUDY LU 2020 年 3 月 8 日
Wonderful idea! Thanks!

サインインしてコメントする。


Roger Stafford
Roger Stafford 2018 年 3 月 5 日
編集済み: Stephen23 2018 年 3 月 5 日
If you want your results statistically uniform area-wise, you can use the 'randfixedsum' function in the File Exchange at:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by