Проблема сейчас в том, что у вас есть куча не связанных попыток. Если у вас есть ведро с 11 шарами и есть 50% шанс убрать каждый шар, вы можете получить любое количество шаров в диапазоне от 0 до 11. Вероятность перекошена к центру, но вы не получите шесть и ровно шесть каждый раз.
Вам нужно удалить шесть и ровно шесть шаров, выбранных произвольно.
Попробуйте что-то еще подобное:
var offers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
for (var i = 0; i < 6; i += 1) {
// choose a remaining offer at random
var index = Math.floor(Math.random() * offers.length);
// retrieve the item being shown
var item = $('.offer').eq(offers[index]);
item.addClass('offerShow');
// remove this offer from the list of possibilities
offers.splice(index, 1);
}
РЕДАКТИРОВАТЬ : В комментариях ОП пояснил, что он действительно хочет взять список предложений произвольного размера и показать шесть из них. Приведенный ниже код отвечает на запросы, а не на строгий запрос в исходном вопросе. Я оставляю исходный код для справки.
var OFFERS_TO_SHOW = 6; // config, of sorts
// make sure no offers are shown now
$('.offer').removeClass('offerShow');
// show offers selected at random
for (var i = 0; i < OFFERS_TO_SHOW; i += 1) {
// get a list of offers not already being shown
var candidates = $('.offer').not('.offerShow');
// select one from this list at random
var index = Math.floor(Math.random() * offers.length);
// show this offer by adding the offerShow class
candidates.eq(index).addClass('.offerShow');
}