Вы можете попробовать создать массив индексов всех элементов, затем отсортировать массив и нарезать только ту часть, которая вам нужна. Наконец, l oop через все элементы, которые нужно показать / скрыть на основе index .
. Вы можете попробовать следующий способ:
function RandomDiv() {
var elements = document.querySelectorAll('#answers li');
var indArr= new Array(elements.length).fill().map((_,i)=>i);
// Shuffle array
var shuffled = indArr.sort(function(){return .5 - Math.random()});
// Get sub-array of first 5 elements after shuffled
var selected = shuffled.slice(0, 5);
elements.forEach((el,i) => {
if(selected.includes(i))
el.style.display='block';
else el.style.display='none';
});
}
RandomDiv();
<div id = "answers">
<li class = "paris"><p> Champ Elysees </p></li>
<li class = "london"><p> Tate Modern </p></li>
<li class = "barcelona"><p> Sagrada Familia </p></li>
<li class = "paris"><p> Montmartre </p></li>
<li class = "ny"><p> Fifth Avenue </p></li>
<li class = "barcelona"><p> Paella </p></li>
<li class = "barcelona"><p> La Rambla </p></li>
<li class = "london"><p> Piccadilly Circus </p></li>
<li class = "paris"><p> Mona Lisa </p></li>
<li class = "ny"><p> Empire State Building </p></li>
<li class = "ny"><p> Broadway </p></li>
<li class = "paris"><p> Musée d'Orsay </p></li>
<li class = "ny"><p> Wall Street </p></li>
<li class = "london"><p> Camden Town </p></li>
<li class = "ny"><p> Big Apple </p></li>
<li class = "barcelona"><p> La Boqueria </p></li>
</div>
<button id="btnNext" onclick="RandomDiv()">Next</button>