View Single Post
Ja visst... Eneste forskjellen er at i opprinnelig program shufflet jeg alltid fra utgangsposisjon, og i ny versjon shuffler jeg fra rekkefølgen siden sist shuffle. Om jeg f.eks. kaller initializeBoxes() i starten på getrandomizedboxed(), så dukker den gamle feilen opp igjen.

Er det et utslag av at Random bare er pseudorandoms? Forsøkte med en løsning hvor jeg garanterte ulike seeds for hver gang, fungerte ikke. Heller ikke å kun lage objektet Random r én gang (som jo er greiere uansett, da er du nå i hvertfall sikker på at ikke samme seed benyttes) fungerte.

Mem om jeg endrer array shufflingen til :
//shuffle the array:
int numberShuffles = 500;
for (int i = 0; i < numberShuffles; i++) {
int newposition = r.nextInt(boxes.length);
int temp = boxes[newposition];
int boxToBeSwitched = r.nextInt(boxes.length);
boxes[newposition] = boxes[boxToBeSwitched];
boxes[boxToBeSwitched] = temp;
}

...så fungerer gamle løsningen også. (tar riktig nok laang tid da, var bare for å sjekkke)

Med numberShuffles lavere funker det ikke så bra..100 ganger gir feks 0.526


Takk for løsningen! Men vil gjerne vite hvorfor ...har en følelse av at jeg overser noe opplagt da...men kanskje ikke.