Нужна функция возвращающая значение случайного элемента массива, но не повторяющегося.
Например, есть массив
var RGBColorsArr = ['rgb(255,255,0)', 'rgb(255,0,0)', 'rgb(51,0,0)', 'rgb(255,0,102)', 'rgb(0,0,51)', 'rgb(0,0,255)', 'rgb(102,0,255)', 'rgb(0,255,255)', 'rgb(51,51,0)', 'rgb(0,0,0)', 'rgb(0,255,0)', 'rgb(0,51,0)'];
содержит 12 цветов в формате RGB.
Получить случайное значение не трудно (генерирую случайный индекс и записываю его значение в переменную):
var getRandomArrIndex = Math.floor( (Math.random() * RGBColorsArr.length) + 0);
var getColor = RGBColorsArr[getRandomArrIndex];
Чтобы следующее значение не повторялось, решил , что можно удалять из массива по индексу уже полученное значение и выбирать рандомно из оставшихся.
НО! Как это можно закольцевать при N-ом вызове функции. Чтобы после удаления всех элементов массива, вернуться к его первоначальному варианту и повторять процедуру.