рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛: рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг

рдПрдХ рдмрд╛рд░ рдореИрдВрдиреЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдХрд╛рдо рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдирд╛рдирд╛ рдерд╛ред рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╢реНрди рдмрдирд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдХреБрдЫ рдирд┐рдпрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп, рдЕрдВрдХ рдХреИрд╕реЗ рдЧрд┐рдиреЗрдВред рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╕ рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрд╛рд░реНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рдерд╛ рдЬрдм рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ред


рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдФрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ n рдкреНрд░рд╢реНрди рд╣реИрдВред рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░рд┐рдХреНрд╕ рд╕реЗ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ n> 1 рддрддреНрд╡ рд╣реИрдВ, рддреЛ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдХреЗ, рд╣рдо рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИn!ред рддреЛ рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдо рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди, рд╣рдо рд╡рд╣рд╛рдВ рдлреИрдХреНрдЯрд░рд┐рдпрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдПрдирдЯреАрдЯреА рд╕реАрдХреНрд╡реЗрдВрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдПрди рдЦреБрдж рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░рдЙрддреНрдкрд╛рджрди рдореЗрдВhrenak-hrenak рднреЗрдЬрддреЗ рд╣реИрдВред рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, рддреЛ рдпрд╣ рд▓реЗрдЦ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


рдХреНрдпрд╛ рд╣реБрдЖ


рдФрд░ рд╣реБрдЖ 21!=тАн51090942171709440000тАмред рд╕рдВрдЦреНрдпрд╛ рдХреЗ рддрдереНрдпрд╛рддреНрдордХ рдореВрд▓реНрдп рдХреЛ 20 рд╕реЗ рдЕрдзрд┐рдХ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 13) рд░рдЦрдирд╛ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдереА рдЬрд┐рд╕реЗ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдЕрдЧрд░ рдЕрдзрд┐рдХ рд╕рд╡рд╛рд▓ рдереЗ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХрд┐рд╕реА рддрд░рд╣ рджреЛрд╖ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рд╕рд░рдгреА рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рдЙрдк-рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдорд┐рд╢реНрд░рдг рдХрд░реЗрдВред рдЬреИрд╕реЗ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╕рднреА рдиреЗ рдореБрдЭреЗ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реМрдВрдкрд╛, рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред


рдУрд╣ рдирдпрд╛ рдЕрджреНрднреБрдд рддрд░реАрдХрд╛


рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдПрдХ рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛ - "рдФрд░ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдПрдВ?"ред рдЪреВрдВрдХрд┐ рдпрд╣ рджреВрд╕рд░рд╛ рдерд╛ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рдХреЛрдг рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрди рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдФрд░ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд╕реНрд╡рдпрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдкрд╣рд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд▓реЗ рдХреЛ рдЙрд╕реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢реЗрд╖ рддрддреНрд╡реЛрдВ рд╕реЗред рдФрд░ рдЗрд╕рд▓рд┐рдП n рдмрд╛рд░, рдЬрдм рддрдХ рд╣рдо рдЕрдкрдиреЗ рдирдП рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рдХрд░рддреЗред




рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░реНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдорд┐рд╢реНрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


public static int[] generateArray(int n) {
	int[] array = new int[n];

	for (int i = 0; i < n; i++) {
		array[i] = i;
	}

	return array;
}

, , Java :


int[] arrayCopy = Array.copyOf(mainArray, mainArray.length);

:


public static int[] shuffleArray(int[] array, Random rand) {
	int[] shuffledArray = new int[array.length];

	for (int i = 0; i < array.length; i++) {
		int origIndex = rand.nextInt(array.length - i);
		shuffledArray[i] = array[origIndex];

		int temp = array[origIndex];
		array[origIndex] = array[array.length - i - 1];
		array[array.length - i - 1] = temp;
	}

	return shuffledArray;
}

, , seed . , , , - :


public static void main(String[] args) {
	int[] mainArray = generateArray(30);
	int[] arrayCopy = Arrays.copyOf(mainArray, mainArray.length);

	Random rand = new Random(419L);
	int[] shuffledArray = shuffleArray(arrayCopy, rand);

	for (int i = 0; i < shuffledArray.length; i++) {
		System.out.print(shuffledArray[i] + " ");
	}

	System.out.println();
}

, . O(n), :


import java.util.Random;
import java.util.Arrays;

public class Shuffle {
	public static void main(String[] args) {
		int[] mainArray = generateArray(30);
		int[] arrayCopy = Arrays.copyOf(mainArray, mainArray.length);

		Random rand = new Random(419L);
		int[] shuffledArray = shuffleArray(arrayCopy, rand);

		for (int i = 0; i < shuffledArray.length; i++) {
			System.out.print(shuffledArray[i] + " ");
		}

		System.out.println();
	}

	public static int[] generateArray(int n) {
		int[] array = new int[n];

		for (int i = 0; i < n; i++) {
			array[i] = i;
		}

		return array;
	}

	public static int[] shuffleArray(int[] array, Random rand) {
		int[] shuffledArray = new int[array.length];

		for (int i = 0; i < array.length; i++) {
			int origIndex = rand.nextInt(array.length - i);
			shuffledArray[i] = array[origIndex];

			int temp = array[origIndex];
			array[origIndex] = array[array.length - i - 1];
			array[array.length - i - 1] = temp;
		}

		return shuffledArray;
	}
}


, , . , ( ), n- . , :

public static int[] subArrayElem(int nth, int elemNumber) {
	int[] sequence = new int[elemNumber];

	for (int i = 1; i <= elemNumber; i++) {
		sequence[elemNumber - i] = nth % i;
		nth /= i;
	}

	return sequence;
}

, , . -, . , :


public static int[] shuffleArray(int[] array, int nth) {
	int[] shuffledArray = new int[array.length];
	int[] sequence = subArrayElem(nth, array.length);

	for (int i = 0; i < array.length; i++) {
		int origIndex = sequence[i];
		shuffledArray[i] = array[origIndex];
		shiftArray(array, origIndex);
	}

	return shuffledArray;
}

public static void shiftArray(int[] array, int index) {
	for (int i = index; i < array.length - 1; i++) {
		array[i] = array[i + 1];
	}
}

, , .



, . BigInteger, . - , . - . , , - , . , , ? .



UPD:

, Java, java.util.Collections.shuffle() . Java .


All Articles