First, set up the HTML :
<div id="wrapper"></div>
Then the JavaScript :
var myArray = ["Asian", "Thai", "Korean", "Chinese", "Mexican"];
var wrapper = document.getElementById('wrapper');
var elementsToInsert = [];
// Creation of the input with radio type and the labels
for(var i = 0; i < myArray.length; i++) {
var radio = document.createElement('input');
var label = document.createElement('label');
radio.type = 'radio';
radio.name = myArray[i];
radio.value = myArray[i];
label.setAttribute("for", myArray[i]);
label.innerHTML = myArray[i];
elementsToInsert.push({ label: label, radio: radio });
}
// Insert the labels and input in a random order
while(elementsToInsert.length !== 0) {
var randomIndex = Math.floor(Math.random() * elementsToInsert.length);
// Array.prototype.splice removes items from the Array and return the an array containing the removed items (See https://www.w3schools.com/jsref/jsref_splice.asp)
var toInsert = elementsToInsert.splice(randomIndex, 1)[0];
wrapper.appendChild(toInsert.label);
wrapper.appendChild(toInsert.radio);
}
The idea is to create the inputs and the labels, and populate an array with them.
Then, you select a random item (label and radio input) from this array, add the label and the input into the wrapper element, and remove this item from the array
Edit
You could also do all this in a single while :
var myArray = ["Asian", "Thai", "Korean", "Chinese", "Mexican"];
var wrapper = document.getElementById('wrapper');
var elementsToInsert = [];
while(myArray.length) {
var randomIndex = Math.floor(Math.random() * myArray.length);
var value = myArray.splice(randomIndex, 1)[0];
var radio = document.createElement('input');
var label = document.createElement('label');
radio.type = 'radio';
radio.name = value;
radio.value = value;
label.setAttribute("for", value);
label.innerHTML = value;
wrapper.appendChild(label);
wrapper.appendChild(radio);
}