A friend of mine Sheraz needed a small code chunk in python that could generate a random sparse matrix. The requirement was to be able to generate a m by n matrix where most of the entries are 0's and the user mentions the number of 1's required. I am listing down the code that was written by me and later improved by Sheraz for the purpose of preserving it by making it accessible online. The function genmatrix takes 3 arguments en is required number of 1's, s and n correspond to the number of rows and columns of matrix a
from numpy import *
from random import *
from math import *
def genmatrix(en,s, n):
count=0
S=range(s)
N=range(n)
a = zeros(shape=(s,n))
while (count < en):
i= randint(0,s-1)
j= randint(0,n-1)
print i, j
if (i in S) and (j in N):
a[(i,j)]=1
S.remove(i)
N.remove(j)
count +=1
#print a
#print [sum(a[i]) for i in range(s)]
#print [sum(a[:,i]) for i in range(n)]
return a