Имеется несколько фраз. При нажатии на кнопку изначально генерировал случайное число в заданном диапазоне, равному количеству фраз, и присваивал каждому числу свой текст. Но мне надо без повторов. Обрыл гугл, многие решения с SO генерировать случайные числа без повторов мне не помогли, без должного опыта я не управился с ними.
В итоге, мне понравился больше такой вариант, на
примере JavaScript, и создал массив типа String со своими фразами.
Стал использовать код из примера на одном сайте:
// Implementing Fisher–Yates shuffle
static void shuffleArray(int[] ar) {
Random rnd = new Random();
for (int i = ar.length - 1; i > 0; i--) {
int index = rnd.nextInt(i + 1);
// Simple swap
int a = ar[index];
ar[index] = ar[i];
ar[i] = a;
}
}
// создадим массив и перемешаем его
int[] mSolutionArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14 };
shuffleArray(mSolutionArray);
Log.i("Array", Arrays.toString(mSolutionArray));
Перемешивает лишь массив типа int.
Первое, что пришло в голову - глупая (от правды не отказываются) идея сделать второй массив int, перемешивать его.
Сделал вот такую канитель:
int mSolutionArray[] = { 0, 1, 2, 3 };
String rnd[] = {
getResources().getString(R.string.random0),
getResources().getString(R.string.random1),
getResources().getString(R.string.random2),
getResources().getString(R.string.random3),
};
Но теперь не знаю, как я могу присвоить, к примеру, числу "1" из массива int - строку random1 из второго массива. И стоит ли вообще это делать? Насколько это глупо?
Или можно как-то перемешать и массив типа String?
Быть может, предложите что-то получше?