JSFiddle - React, Tailwind, and code Playground

HTML

<pre id=p></pre>

JavaScript

var entries = prompt('How many entries?'),
    edgeLength = entries * 3
    wallCount = entries * 2
    eggCount = entries * 4

// build array
var a = new Array(edgeLength)
for (var i = 0; i < edgeLength; i++) {
    a[i] = new Array(edgeLength)
    for (var j = 0; j < edgeLength; j++) {
        a[i][j] = ' '
    }
}

// add outer walls
for (var i = 0; i < edgeLength; i++) {
    a[0][i] = '#'
    a[edgeLength-1][i] = '#'
    a[i][0] = '#'
    a[i][edgeLength-1] = '#'
}

// add inner walls
for (var __ = 0; __ < wallCount; __++) {
    var wallLength = Math.floor(Math.random() * 9) + 2,
        vertical = Math.random() < 0.5,
        parallelIndex = Math.floor(Math.random() * (edgeLength - wallLength)),
        perpendicularIndex = Math.floor(Math.random() * edgeLength)
    
    for (var i = parallelIndex; i < parallelIndex + wallLength; i++) {
        if (vertical) a[i][perpendicularIndex] = '#'
        else a[perpendicularIndex][i] = '#'
    }
}

// add eggs
for (var __ = 0; __ < eggCount; __++) {
    var valid = false
    while (!valid) {
        var x = Math.floor(Math.random() * edgeLength),
            y = Math.floor(Math.random() * edgeLength)
        
        if (a[x][y] == ' ') {
            valid = true
            a[x][y] = 'o'
        }
    }
}

// render to ASCII
for (var i = 0; i < a.length; i++) a[i] = a[i].join('')
document.getElementById('p').innerText = a.join('\n')