Самый эффективный, основной способ иметь неповторяющиеся случайные числа объясняется этим псевдокодом. Нет необходимости иметь вложенные циклы или хешированные запросы:
// get 5 unique random numbers, possible values 0 - 19
// (assume desired number of selections < number of choices)
const int POOL_SIZE = 20;
const int VAL_COUNT = 5;
declare Array mapping[POOL_SIZE];
declare Array results[VAL_COUNT];
declare i int;
declare r int;
declare max_rand int;
// create mapping array
for (i=0; i<POOL_SIZE; i++) {
mapping[i] = i;
}
max_rand = POOL_SIZE-1; // start loop searching for maximum value (19)
for (i=0; i<VAL_COUNT; i++) {
r = Random(0, max_rand); // get random number
results[i] = mapping[r]; // grab number from map array
mapping[r] = max_rand; // place item past range at selected location
max_rand = max_rand - 1; // reduce random scope by 1
}
Предположим, что первая итерация генерирует случайное число 3 для начала (от 0 до 19). Это сделало бы результаты [0] = сопоставление [3], т. Е. Значение 3. Затем мы присвоили отображение [3] равным 19.
На следующей итерации случайное число было 5 (из 0-18). Это дало бы результаты [1] = mapping [5], т. Е. Значение 5. Затем мы назначили отображение [5] на 18.
Теперь предположим, что следующая итерация снова выбрала 3 (из 0 - 17). результатам [2] присваивается значение отображения [3], но теперь это значение не равно 3, но 19.
Эта же защита сохраняется для всех чисел, даже если у вас есть тот же номер 5 раз подряд. Например, если генератор случайных чисел дал вам 0 пять раз подряд, результаты будут следующими: [0, 19, 18, 17, 16].
Вы никогда не получите одинаковый номер дважды.
Я просто открыл sdk manager и установил все инструменты sdk для android.
Я испытываю эту ошибку при обновлении Android-SDK Plateform-Tools 23.1 в Android SDK Manager
Я работаю над ubuntu 14.04 [32bit], который не поддерживает Plateform-Tools 23.1, он поддерживает только в 64-битной архитектуре операционной системы, поэтому понизите мои инструменты Plateform 23.0
, он отлично работает ... !!!
Проверьте, нужно ли вам установить «Android Sdk Platform Tools» в Android SDK Manager.
Как-то после установки Android Studio из пакета (для Linux) мне не хватало каталога «platform-tools» в «Android / Sdk», где находится исполняемый файл adb. Помогли установки инструментов платформы. Это было легче найти в автономном диспетчере sdk.
Перейти к: Настройки Android Studio> Внешний вид и amp; Поведение> Системные настройки> Android SDK:
Если путь для SDK является красным цветом, перейдите в папку SDK и нажмите
blockquote>***APPLY***
Я установил правильную версию sdk, которая соответствовала моей версии Android android версии
Это связано с тем, что вы удалили adb.exe (это мог быть ваш антивирус, который удалил его), которые находились в инструментах платформы в папке sdk android.
Что вам нужно сделать, так это удалить текущие платформы-инструменты в программе менеджера sdk и снова установить его снова.
Откройте автономный диспетчер SDK и установите пакет инструментов платформы.
Я также сталкиваюсь с той же проблемой при обновлении студии Android от версии 1.4 до 1.5. Когда я запускаю команду adb из терминала, я обнаружил следующую ошибку:
bash: ./adb: невозможно выполнить двоичный файл: ошибка формата Exec
После R & amp; d я обнаружил, что эта ошибка происходит из-за неподдерживаемой архитектуры. В моем случае:
Я использую 32-битный ubuntu14.04 LTS. Я заметил, что после обновления папка lib в платформенных инструментах преобразуется в lib64. Я думаю, что выше ошибка возникает из-за 32-битной архитектуры, потому что после обновления 32-разрядная поддержка удалена.
Для постоянного обновления вашего решения вы используете 64-битную архитектуру. Быстрое решение - заменить обновленную папку с инструментами платформы старым, содержащим папку lib, а не lib64.
Я думаю, что поддержка 32-битной архитектуры для разработки Android остановлена google для будущих выпусков. Но я не уверен.