Так что я немного застрял на этом. Я пытался и искал часы, и мне еще предстоит найти решение, которое соответствует моим профессорам очень строгим параметрам.Заполните массив случайной перестановкой
Мне нужно заполнить массив случайной перестановкой чисел от 0 до 9, и они не могут повторяться. Я знаю, что в этом есть много тем, и я нашел несколько способов сделать это, но это не соответствует нашим требованиям.
Поэтому я должен использовать обычный массив и объект Random с заданным семенем, чтобы заполнить массив уникальными значениями. Я не могу использовать коллекции, ArrayLists, любые итераторы, просто регулярные циклы. Я не могу создать еще один класс для выполнения этой функции.
Моя основная идея до сих пор
for(int i=1; i<numItems; i++)
{
int count = 1;
int m=rand.nextInt(numItems);
for(int j=0; j<i; j++)
{
if(m==permutation[j])
{
m=rand.nextInt(numItems);
count++;
j=-1;
}
}
permutation[i]=m;
numAttempts[i]=count;
}
И это прекрасно работает, но мы не можем изменить переменную управления (J) внутри цикла.
В основном я хочу, чтобы он начинал тестирование с самого начала со случайными числами, которые генерирует объект rand в любое время, если утверждение истинно.
Любая помощь очень ценится.
EDIT: Его выход
Простейшим решением является заполнение массива уникальными значениями (легко), а затем справедливое перемешение его содержимого. Это позволяет избежать того, чтобы отслеживать, какие значения были/еще не были замечены, поскольку он начинает уникальным и, по-видимому, все еще уникален после каждого шага в случайном порядке. – keshlam
Я не могу перетасовать их. Он должен быть последовательным выходом, и он должен выглядеть точно так же, как и его, который не использует shuffle. – user3092589
Что это значит, он должен выглядеть точно так же, как он? Перетасовка с одним и тем же случайным семенем будет непротиворечивой. – Blorgbeard