Hi! I am tryng to generate a matrix(m x n), MatContribution, with the following subroutine. Its elements are 1 with a certain probability p, 0 otherwise.
SUBROUTINE Matrice_Conoscenza(p,n,m,ConoscenzaAgente,MatContribution)
REAL,INTENT(IN) :: p
INTEGER,INTENT(IN) :: n,m
REAL, DIMENSION(1:n), INTENT(INOUT) :: ConoscenzaAgente
REAL, DIMENSION(1:m,1:n), INTENT(OUT) :: MatContribution
INTEGER :: i,j
DO i=1,m
CALL RANDOM_SEED()
CALL RANDOM_NUMBER(ConoscenzaAgente)
DO j=1,n
IF(ConoscenzaAgente(j)<p) THEN
MatContribution(i,j)=1
ELSE
MatContribution(i,j)=0
ENDIF
ENDDO
ENDDO
ENDSUBROUTINE Matrice_Conoscenza
I call the subroutine in the main program by the following statements and export MAT_CONTRIBUTION.
CALL Matrice_Conoscenza(P,N,M,CONOSCENZA_AGENTE,MAT_CONTRIBUTION)
OPEN(UNIT=0,FILE='MatContribution.DAT')
DO i=1,M
WRITE (0,"(100000(f2.0))") MAT_CONTRIBUTION(i,:)
ENDDO
CLOSE(UNIT=0)
The problem is that the MAT_CONTRIBUTION I obtain has all rows equals.
0.0.0.0.1.0.1.0.1.0.0.0.
0.0.0.0.1.0.1.0.1.0.0.0.
0.0.0.0.1.0.1.0.1.0.0.0.
0.0.0.0.1.0.1.0.1.0.0.0.
0.0.0.0.1.0.1.0.1.0.0.0.
0.0.0.0.1.0.1.0.1.0.0.0.
0.0.0.0.1.0.1.0.1.0.0.0.
Where are my errors in the code? Is it correct to export a matrix in this way? Thank you in advance.