JSFiddle - React, Tailwind, and code Playground

HTML

<a id="generator" href="#">Show random light box</a>
<br /><br />
<div class="hide">
 <div id="lightbox1" class="lightbox">
    lightbox1
 </div>
 <div id="lightbox2" class="lightbox">
    lightbox2
 </div>
 <div id="lightbox3" class="lightbox">
    lightbox3
 </div>
 <div id="lightbox4" class="lightbox">
    lightbox4
 </div>
 <div id="lightbox5" class="lightbox">
    lightbox5
 </div>
 <div id="lightbox6" class="lightbox">
    lightbox6
 </div>
 <div id="lightbox7" class="lightbox">
    lightbox7
 </div>
</div>

<div id="last-div">
    This is the last div!
</div>

CSS

.lightbox,
#last-div {
    display: none;
}

JavaScript

$(document).ready(function () {
    var all,
        randomed;
    
    all = generateAll();
    randomed = generateRandomed(all);
    
    $("#generator").on("click", function (evt) {
        evt.preventDefault();
        randomed = doNext(all, randomed);
    });
});

function generateAll() {
    // Generates the array of "all" divs to work on
    var a = [];
    var divs = $(".hide > div.lightbox");
    for (var i = 1; i <= divs.length; i++) {
        a.push(i);
    }
    console.log("List of divs available to toggle: " + a);
    return a;
}

function generateRandomed(all) {
    // Randomizes the original array
    randomed = fisherYates(all);
    console.log("Setting randomized array: " + randomed);
    return randomed;
}

function doNext(all, randomed) {
    $(".lightbox, #last-div").hide();
    
    if (randomed.length < 1) {
        console.log("All lightboxes toggled, showing last, then starting over");
        $("#last-div").show();
        randomed = generateRandomed(all);
    } else {
        var next = randomed.shift();
        var selector = "#lightbox" + next;
        console.log("Showing " + selector);
        $(selector).show();
        console.log("What's left: " + randomed);
    }
    
    return randomed;
}

// Randomizes an array and returns the new one (doesn't modify original)
function fisherYates ( myArray ) {
  var return_arr = myArray.slice(0);
  var i = return_arr.length;
  if ( i == 0 ) return false;
  while ( --i ) {
     var j = Math.floor( Math.random() * ( i + 1 ) );
     var tempi = return_arr[i];
     var tempj = return_arr[j];
     return_arr[i] = tempj;
     return_arr[j] = tempi;
  }
  return return_arr;
}