Best Practice Ein int Array richtig mischen

Könnt ihr mir sagen was hieran nicht richtig ist?
Java:
	public static float permutability(int[] array1, int[] array2) {
		int ex = 0;
		double d = 0;
		for (int i = 1; i < 1000; i++) {
			d += Math.pow(1.0 / array1.length, i);
			if (d >= 0.5) {
				ex = i;
				break;
			}
		}
		int s = 0;
		for (int i = 0; i < array1.length; i++) {
			if (array1[i] == array2[i]) {
				s++;
			}
		}
		return Math.abs((float) (s - ex) / (float) array1.length);
	}

	public static void main(String[] args) throws Exception {
		int length = 10_000;
		int[] array1 = new int[length];
		int[] array2 = new int[length];
		for (int i = 0; i < length; i++) {
			array1[i] = i;
		}
		System.arraycopy(array1, 0, array2, 0, length);

		for (int i = 0; i <= 100; i++) {
			mischen(array2, (float) (i / 2.0), new Random());
			System.out.println(permutability(array1, array2));
			System.arraycopy(array1, 0, array2, 0, length);
		}
	}

Der Erwartungswert ist nicht 0 sondern bei length 10000 ca 1.0E-4. Diesen will ich davon abziehen um 0 zu erhalten.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben