how to get an equal number in random.range

how can we generate a grid of random 1 and 0 with equal number of 1 and 0.

this is our code
Thank you

I don’t know if the following method will work. I haven’t tested it inside Unity:

Solution with list

private void Foo()
{
    System.Collections.Generic.List<int> numbers = GetNumbers( size.x * size.y ) ;

    for( int x = 0 ; x < size.x ; x++ )
    {
        for( int y = 0 ; y < size.y ; y++ )
        {
             text.GetComponent<TextMesh>().text = numbers[ x * size.y + y ] ;
        }
    }
}

private System.Collections.Generic.List<int> GetNumbers( int size )
{
	System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>( size );
    int remainingZeros = size / 2 ;
    int remainingOnes = size / 2 ;
    int output = 0 ;
    
    for( int i = 0 ; i < size ; ++i )
    {
        if( remainingZeros == 0 )
        {
            output = 1 ;
            remainingOnes-- ;
        }
        else if( remainingOnes == 0 )
        {
            output = 0 ;
            remainingZeros-- ;
        }
        else
        {
            float a = (float) remainingZeros / (remainingZeros + remainingOnes);
            float randomNumber = Random.value;
            
            if( randomNumber > a )
            {
                output = 1 ;
                remainingOnes-- ;
            }
            else
            {
                output = 0 ;
                remainingZeros-- ;
            }
        }                
        list.Add( output ) ;
    }
}

###Solution with IEnumerator

private void Foo()
{
    IEnumerator<int> getNumber = GetNumber( size.x * size.y ) ;

    for( int x = 0 ; ...)
    {
        for( int y = 0 ; ... )
        {
             getNumber.MoveNext();
             text.GetComponent<TextMesh>().text = getNumber.Current ;
        }
    }
}

private IEnumerator<int> GetNumber( int size )
{
    int remainingZeros = size / 2 ;
    int remainingOnes = size / 2 ;
    int output = 0 ;
    
    for( int i = 0 ; i < size ; ++i )
    {
        if( remainingZeros == 0 )
        {
            output = 1 ;
            remainingOnes-- ;
        }
        else if( remainingOnes == 0 )
        {
            output = 0 ;
            remainingZeros-- ;
        }
        else
        {
            float a = (float) remainingZeros / (remainingZeros + remainingOnes);
            float randomNumber = Random.value;
            
            if( randomNumber > a )
            {
                output = 1 ;
                remainingOnes-- ;
            }
            else
            {
                output = 0 ;
                remainingZeros-- ;
            }
        }                
        yield return output ;
    }
}

Thank you. I will try it. ^____^