JSFiddle - React, Tailwind, and code Playground

HTML

<div id="ship">
</div>

JavaScript

// by /u/ Redman1024
// with fixes from /u/Zimposity
// choose quadrant
ships = []

for (var i=0;i<13;i++){

var quadrantno = Math.random()
var quadrant = ""
if (quadrantno < 0.25) {quadrant = " ♡ "}
else if (quadrantno < 0.5) {quadrant = " ♠ "}
else if (quadrantno < 0.75) {quadrant = " ♢ "}
else {quadrant = " ♣ "}

// choose 1st char type
var typeno = Math.floor(Math.random()*100)
if (typeno < 75) {type1 = "human/alternian"}
else if (typeno < 85) {type1 = "beforian"}
else if (typeno < 95) {type1 = "ancestor"}
else {type1 = "other"}

// choose 2nd char type. more likely to be similar to 1st
var typeno = Math.floor(Math.random()*100)
if (type1 === "human/alternian")
{
    if (typeno < 80) {type2 = "human/alternian"}
    else if (typeno < 90) {type2 = "ancestor"}
    else if (typeno < 95) {type2 = "beforian"}
    else {type2 = "other"}
}
else if (type1 === "beforian")
{
    if (typeno < 80) {type2 = "beforian"}
    else if (typeno < 90) {type2 = "human/alternian"}
    else if (typeno < 95) {type2 = "ancestor"}
    else {type2 = "other"}
}
else if (type1 === "ancestor")
{
    if (typeno < 80) {type2 = "ancestor"}
    else if (typeno < 90) {type2 = "human/alternian"}
    else if (typeno < 95) {type2 = "beforian"}
    else {type2 = "other"}
}
else if (type1 === "other")
{
    if (typeno < 80) {type2 = "human/alternian"}
    else if (typeno < 90) {type2 = "beforian"}
    else if (typeno < 95) {type2 = "ancestor"}
    else {type2 = "other"}
}
else {}

// assign character from 1st group

char = ""

if (type1 === "human/alternian")
{
    var charno = Math.floor(Math.random()*60)
    if (charno > 57) {char = "Roxy"}
    else if (charno > 54) {char = "Jane"}
    else if (charno > 51) {char = "Jake"}
    else if (charno > 48) {char = "Dirk"}
    else if (charno > 45) {char = "John"}
    else if (charno > 42) {char = "Rose"}
    else if (charno > 39) {char = "Dave"}
    else if (charno > 36) {char = "Jade"}
    else if (charno > 33) {char = "Aradia"}
    else if (charno > 30)...