Generating a Binary Matrix in C

In summary, you can generate a binary matrix with only 0s and 1s by using a seed and random number generator.
  • #1
gradnu
21
0
Does anybody know how to generate a random matrix with entries 0 and 1 only(binary matrix). Numbers of 1 and 0 are fixed every time matrix is generated.
Possibly a program in 'C'.

Thanks
 
Technology news on Phys.org
  • #2
Numbers are not truly random so perhaps you would like to look at random number generators. You could take your seed and square it, then take out the bits. and the square is your new seed. Or think of another mathematical formula for generating random numbers.http://www.cprogramming.com/tutorial/random.html
The number returned by function rand is dependent on the initial value, called a seed that remains the same for each run of a program. This means that the sequence of random numbers that is generated by the program will be exactly the same on each run of the program.

You can change the seed to be the same for the matricies you wish to have the same 1/0.
 
  • #3
is the size of the matrix random as well?
 
  • #4
No, size of matrix is finite.
Basically the problem is to generate random networks with fixed number of nodes and fixed number of links. Network is being represented by a binary matrix where the entry '1' means that a link exists between the corresponding row and column and '0' means the link does not exist.
I have to make sure that in generating new network(or matrix) the network should remain connected. It shouldn't break into two or more smaller networks.
I haven't done graph theory so if somebody can help me with some kind of algorithm, it would be great.

Thanks,
 
  • #5
Are you generating a incidence matrix (matrix is indexed by nodes and vertices; element ij is one if node i is an endpoint of vertex j) or an adjacency matrix (element ij is one if some vertex connects node i to node j)? A network is a directed graph, so the adjacency matrix is asymmetric.

Determining whether a random NxN unitary matrix with M ones represents a digraph is the NP-complete problem called the clique problem.
 
  • #6
I want to generate random adjacency matrices where element ij is 1 if an edge connects node i to node j. Yes it is asymmetric.
 
  • #7
gradnu said:
I want to generate random adjacency matrices where element ij is 1 if an edge connects node i to node j. Yes it is asymmetric.

..and you wish to do so with a fixed number of "1"s?

This might not be the most efficient:

initialize A=0

For k ones,
do this k times
{
select randomly i from 1 to n, and j from 1 to n
if A[i,j]=1, go back and get another pair (without changing k)
else set A[i,j]=1
}

If necessary, discard proposed links to oneself (i.e. reject the pair if i=j).
 
Last edited:
  • #8
Nodes in a network can link to themselves. For example, in finite state machine, it is often best to explicitly represent the time steps during which the machine remains in one state as a transition from that state to that same state.

One problem with this approach is that it most likely will not generate a "network". You could wrap this approach in an outer loop that tests whether the adjacency network represents a single graph. If it doesn't, try again. Determining whether this is the case might take a lot of CPU time (its NP-complete).
 

1. How do I generate a binary matrix in C?

To generate a binary matrix in C, you can use a nested for loop to iterate through each row and column of the matrix. Within the loop, use the rand() function to generate random numbers between 0 and 1, and then use an if statement to assign 0 or 1 to each element based on the random number generated.

2. Can I generate a binary matrix with a specific size?

Yes, you can generate a binary matrix with a specific size by using two variables to store the desired number of rows and columns. Then, use these variables in the for loop to iterate through each row and column and generate the matrix with the desired size.

3. How can I print the binary matrix in a readable format?

To print the binary matrix in a readable format, you can use nested for loops to iterate through each row and column and use the printf() function to print each element with a space in between. You can also use formatting options, such as %d, to ensure that the matrix is printed in a clear and organized way.

4. Can I generate a binary matrix with only 0s or 1s?

Yes, you can generate a binary matrix with only 0s or 1s by using the rand() function to generate random numbers between 0 and 1, and then using an if statement to assign 0 or 1 to each element based on the random number generated. However, you can also use other methods, such as initializing the matrix with all 0s or 1s or using the bitwise operator to toggle between 0s and 1s.

5. What is the purpose of generating a binary matrix in C?

A binary matrix can be useful in many applications, such as image processing, data storage, and network analysis. It can also be used as a representation of a graph or a map in various algorithms. By generating a binary matrix in C, you can efficiently store and manipulate binary data, making it a valuable tool in programming and data analysis.

Similar threads

  • Programming and Computer Science
Replies
14
Views
1K
  • Programming and Computer Science
Replies
25
Views
1K
  • Linear and Abstract Algebra
Replies
2
Views
351
  • Programming and Computer Science
2
Replies
57
Views
3K
  • Programming and Computer Science
Replies
29
Views
2K
  • Programming and Computer Science
Replies
5
Views
1K
  • Programming and Computer Science
Replies
1
Views
1K
  • Programming and Computer Science
Replies
2
Views
1K
  • Programming and Computer Science
Replies
3
Views
929
  • Programming and Computer Science
Replies
33
Views
2K
Back
Top