# if i have a i*j matrix(with random numbers ), then how can i make the sum of first row = d(say d= 5).

1 Ansicht (letzte 30 Tage)
reshdev am 19 Aug. 2014
Kommentiert: reshdev am 19 Aug. 2014
HELLO,
I want to make random number matrix having the sum of first row elements equal to d (a positive number). I tried to use Roger Stafford's randomfixedsum for first row but was not successful.
thank you
Resh
##### 1 KommentarKeine anzeigenKeine ausblenden
Ben11 am 19 Aug. 2014
Can you please show the code you actually used that did not work?

Melden Sie sich an, um zu kommentieren.

### Antworten (3)

Orion am 19 Aug. 2014
Bearbeitet: Orion am 19 Aug. 2014
You can do this: http://www.mathworks.com/matlabcentral/newsreader/view_thread/318632 And you don't need a value constraint in the first line.
##### 0 Kommentare-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

Aykut Satici am 19 Aug. 2014
I understand that you would like to get a matrix A with m rows and n columns, and your constraint is that the first row has to sum to d
This means you can arbitrarily select (n-1) of these numbers such that their sum is less than d and then assign the last one such that the whole sum is d.
As a result, one way of doing this would be to generate (n-1) random numbers all of which is smaller or equal to d/(n-1) and then select the last one as d minus the sum of the previous (n-1). See the code below:
m = 4; % number of rows
n = 7; % number of columns
d = 5; % desired sum of the first column
a = 10/17; % lower bound on the elements of the first row of A
% Generate the matrix
A = zeros(m,n); % Create a matrix of zeros
% of dimension m-by-n
A(2:m,:) = rand(m-1,n); % Populate the elements of the
% matrix through rows 2 to m
% with random numbers
A(1,1:n-1) = a + (d/(n-1)-a)*rand(1,n-1); % Generate (n-1) random numbers
% between a and d/(n-1)
% (see "help rand")
A(1,n) = d - sum(A(1,1:n-1));
##### 2 Kommentare1 älteren Kommentar anzeigen1 älteren Kommentar ausblenden
Guillaume am 19 Aug. 2014
What you're asking now is completely different from what you've asked originally. You should create a new question.

Melden Sie sich an, um zu kommentieren.

Guillaume am 19 Aug. 2014
Bearbeitet: Guillaume am 19 Aug. 2014
You don't say what you want to happen in the other rows, so I would just generate a random matrix, divide it by the sum of the first row and multiply it by d.
M = rand(nrows, ncols);
M = M / sum(M(1, :)) * d;
##### 1 KommentarKeine anzeigenKeine ausblenden
reshdev am 19 Aug. 2014
ok great. Thank you again. Now, you can have a look at my main problem. i have mentioned constraints that represents different sums for different rows and columns. I have also written a small program at the end. After that, i was unable to do anything.
Can you please take a look at that one too. It will be highly appreciated.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Find more on Random Number Generation in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by