Просмотр полной версии : Random без повторений
greenhill
16.11.2009, 17:52
Подскажите, пожалуйста, как правильно организовать рендом без повторений.
скажем 1,2,3,4,5 Чтоб все цифры были, а порядок рендомно менялся. Но не было повторений типа 1,1,2,3,5
Если допустимо 1,2,1, то просто запоминайте предыдущее число и проверяйте новое на совпадение с предыдущим.
greenhill
16.11.2009, 18:44
спасибо
aceton41k
31.03.2010, 23:06
Подскажите пожалуйста как следующее:
имеется 10 клипов
в начальный момент времени загружается совершенно случайный клип (допустим 3), далее идет random с таким расчетом что случайно и только один раз за первым клипом начнут проигрываться остальные клипы (2,6,1,7,8,4,9,10,5), при этом ниразу не повторившись. Затем когда последовательность клипов кончится (нечего проигрывать). Все счетчики сбрасываются и проигрывание начинается заного с клипа, номер которого не повторяет номер последних 4-х проигранных клипов. Надеюсь понятно объяснил =)
Создайте массив со своими клипами. Перетасуйте его (поиск по shuffle array site:flasher.ru). Запомните предварительно ссылку на случайный клип не входящий в последнюю четверку. Далее, shift'ом выбирайте свои клипы из массива. После того, как закончатся, формируете новый массив из того элемента, который запомнили + остальные заново перетасованные. И поехали по новой с "Запомните предварительно ссылку..."
var arr = [c1,c2,c3,c4.....]; // набор клипов пихаем в массив
c1.play(); // ну допустим первый клип сразу включаем
function moveAndDelete() {
// сдесь такая задача, думаю справитесь - каждый раз из массива arr запускается клип рандомно. Этот же клип удаляется из массива, а затем создается новый массив.
}
var t = setInterval(moveAndDelete,someTimeRepeat);
Я заполнял масив числами от 1 до н.
Делал рандом от 0 до длинны массива. Брал элемент массива с полученым чеслом, удалял его с массива. снова рандомил от о по новой длине.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.