Onder de streep staat Iris haar java-code.
Ik kan er, al lezende, geen speld tussen krijgen. Omdat ik weet dat die speld er tussen moet verdenk ik de random generator.

ik maak er dit van:

 public int random(){
  	return (int)(3*Math.random());
  }

Nu krijg ik steeds zo'n 666 wasmachines, zoals te verwachten was.
Je trekt je random generator nogal gauw een niet-random hoek in als je er kunstjes mee doet...


import java.util.*;

public class DrieDeurenProbleem
{
  public static void main(String[] args)
  {
    Generator generator = new Generator(args[0]);
  }
}

class Generator
{
  public Generator(String wissel)
  {
    int winst = 0;

    for (int i = 1; i < 1000; i++)
    {
      // ken aan een van de deuren de wasmachine toe
      int wasmachine = random();
      // doe een eerste keuze1
      int keuze1 = random();
      
      // "open" een deur die niet gekozen is en waar geen
      // wasmachine achter zit
      int eerstGeopend = 10;
      for (int j = 0; j < 3; j++)
      {
        eerstGeopend = j;
        if (eerstGeopend != wasmachine && eerstGeopend != keuze1)
        {
          break;
        }
      }

      int keuze2 = 10;
      // open de niet gekozen deur
      if (wissel.equals("Y"))
      {
        for (int k = 0; k < 3; k++)
        {
          keuze2 = k;
          if (keuze2 != keuze1 && keuze2 != eerstGeopend)
          {
            break;
          }
        }
      }
      // open de eerstgekozen deur
      else
      {
        keuze2 = keuze1;
      }

      if (keuze2 == wasmachine) winst = winst + 1;
    }
    System.out.println("Je hebt " + winst + " wasmachines gewonnen.");
  }
  
  // genereer willekeurig getal van 0 t/m 2
  public int random()
  {
    double temp = 10;
    do
    {
      temp = Math.random() * 10;
    }
    while(temp > 2.0);

    Double obj = new Double(temp);
    int res = obj.intValue();
    return res;
  }
}

tweede versie
In dit stukje:
while(eerstGeopend > 2)
      {
        eerstGeopend = random();
        if (eerstGeopend <= 2 && eerstGeopend != wasmachine && eerstGeopend != keuze1)
        {
          break;
        }
      }
Random levert altijd 0, 1 of 2 op. Die while doet het dus altijd 1 en niet meer dan 1 keer, dat kan dus weg. 'break' is dan niet interessant meer.
Hetzelfde geldt voor de andere while loop.

Je bedoelt eigenlijk: while(true)...


import java.util.*;

public class DrieDeurenProbleem
{
  public static void main(String[] args)
  {
    Generator generator = new Generator(args[0]);
  }
}

class Generator
{
  public Generator(String wissel)
  {
    int winst = 0;

    for (int i = 1; i < 1000; i++)
    {
      // ken aan een van de deuren de wasmachine toe
      int wasmachine = random();
      // doe een eerste keuze1
      int keuze1 = random();

      // "open" een deur die niet gekozen is en waar geen
      // wasmachine achter zit
      int eerstGeopend = 10;
      
      //for (int j = 0; j < 3; j++)
      while(eerstGeopend > 2)
      {
        eerstGeopend = random();
        if (eerstGeopend <= 2 && eerstGeopend != wasmachine && eerstGeopend != keuze1)
        {
          break;
        }
      }

      int keuze2 = 10;
      // open de niet gekozen deur
      if (wissel.equalsIgnoreCase("Y"))
      {
        //for (int k = 0; k < 3; k++)
        while(keuze2 > 2)
        {
          keuze2 = random();
          if (keuze2 <= 2 && keuze2 != keuze1 && keuze2 != eerstGeopend)
          {
            break;
          }
        }
      }
      // open de eerstgekozen deur
      else
      {
        keuze2 = keuze1;
      }

      if (keuze2 == wasmachine)
      {
        winst = winst + 1;
      }
    }
    System.out.println("Je hebt " + winst + " wasmachines gewonnen.");
  }
  
  // genereer willekeurig getal van 0 t/m 2
  public int random()
  {
    return (int)(3*Math.random());
  }
}