X
Xyz1
Gast
Java:
public static void mischen(int[] array, float n, Random r) {
double n1 = n;
int n2 = (int) (array.length * n1);
for (int i = 0; i < n2; i++) {
swap(array, r.nextInt(array.length), r.nextInt(array.length));
}
}
public static void swap(int[] array, int i1, int i2) {
int i = array[i1];
array[i1] = array[i2];
array[i2] = i;
}
public static float permutability(int[] array1, int[] array2) {
int s = 0;
for (int i = 0; i < array1.length; i++) {
if (array1[i] == array2[i]) {
s++;
}
}
return (float) s / (float) array1.length;
}
public static void main(String[] args) throws Exception {
int length = 1000;
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 <= 5; i++) {
mischen(array2, (float) (i / 2.0), new Random());
System.out.println(permutability(array1, array2));
System.arraycopy(array1, 0, array2, 0, length);
}
}
Hallo, meine Frage wäre nun, wie ich bei
mischen(int[] array, float n, Random r)
n
wählen muss, damit das int Array wirklich richtig gemischt wäre...Achso das Ergebnis noch:
Code:
1.0
0.367
0.139
0.055
0.019
0.006