how can we generate a grid of random 1 and 0 with equal number of 1 and 0.
this is our code
Thank you
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:
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. ^____^