I want to construct a sparse random binary matrix ${{\bf{H}}_{m \times n}}$ that has the following properties
1- Faction of columns of weight $i$ is ${v_i}$ .
2- Fraction of rows of weight $i$ is ${h_i}$.
3- No two columns in the matrix have an overlap greater than one.
For instance, for ${v_2} = 7/10,{v_3} = 3/10$ and ${h_4} = 2/5,{h_5} = 3/5$ the random binary matrix can be represented as
${{\bf{H}}_{5 \times 10}} = \left[ {\begin{array}{*{20}{c}} 1&1&0&1&1&0&0&1&0&0\\ 0&1&1&0&1&1&1&0&0&0\\ 0&0&0&1&0&0&0&1&1&1\\ 1&1&0&0&0&1&1&0&1&0\\ 0&0&1&0&0&1&0&1&0&1 \end{array}} \right]$
The matrix ${\bf{H}}$ is called irregular low density parity check matrix in channel coding. There are a few algorithms that have been proposed to construct the matrix for low to moderate dimension (maximum n=10e4,m=n/2) such as progressive edge growth (PEG). How can I construct ${\bf{H}}$ for given ${v_i}$ and ${h_i}$ and the constraint 3 randomly for large dimension ( for example n=10e5,m=n/2)?