一个袋子中有100个黑球,100个白球,每次从中取出两个球,然后放回一个球,如果取出两个球颜色相同,则放入一个黑球,如果取出一百一黑,则放入一个白球,请问到最后袋中剩下的球的颜色:
1)黑球 2)白球 3)不一定。
给出证明。
import java.util.Random;
import java.lang.Math;
public class WhiteAndBlack
{
/**
*@description numContainer 1:whiteBall ; 2:blackBall
*/
public static void main(String[] args)
{
for (int i = 0 ; i < 10 ; i ++ )
getBall();
}
public static void getBall()
{
int[] numContainer = new int[200];
int[] numCount = new int[200];
Random randomNum = new Random();
for ( int i = 0 ; i < 100; i ++ )
{
numContainer[Math.abs(randomNum.nextInt())%200] = 1;
}
for ( int i = 0 ; i < 200; i ++ )
{
if (numContainer[i] != 1) numContainer[i] = 2;
}
while(!isEmpty(numContainer))
{
int one = Math.abs(randomNum.nextInt())%200 ;
int two = Math.abs(randomNum.nextInt())%200 ;
numContainer = getA(numContainer, numContainer[one]);
numContainer = getA(numContainer, numContainer[two]);
if (numContainer[one] == numContainer[two] )
numContainer = getA(numContainer, 2);
if (numContainer[one] != numContainer[two] )
numContainer = getA(numContainer, 1);
}
for (int i = 0 ; i < numContainer.length; i ++ )
if (numContainer[i] != 0 ){
System.out.println(numContainer[i]);
break;
}
else if ( i == numContainer.length -1 )
System.out.println(numContainer[i]);
}
public static int[] getA(int[] tmpArray, int value)
{
for ( int i = 0 ; i < tmpArray.length ; i ++ )
{
if (tmpArray[i] == value )
{
tmpArray[i] = 0;
break;
}
}
return tmpArray;
}
public static boolean isEmpty(int[] tmpArray )
{
boolean isEmpty = true;
int count = 0;
for ( int i = 0 ; i < tmpArray.length ; i++ )
{
if (tmpArray[i] != 0 )
count ++ ;
}
if (count > 1)
isEmpty = false;
return isEmpty;
}
}