Generando un enlace aleatorio a través de Javascript / HTML

Estoy tratando de crear un script que me permita mostrar un hipervínculo que redirija al usuario a una URL aleatoria seleccionada de cuatro sitios. Hasta ahora, he creado una matriz para los sitios y una función que intenta generar la URL aleatoria. Para mi propósito, es importante que el resultado ("Haga clic para ir a un sitio aleatorio") no sea un botón, sino una cadena simple (que se puede hacer clic).

Al ejecutar el código, aparece un error de referencia "el enlace no está definido (en la línea 18)". Pensé que había definido el enlace en el código convar link = 'http://' + links[randIdx];, por lo que no estoy completamente seguro de por qué recibo este error y cómo solucionarlo.

¿Alguien que pueda echar un vistazo a mi código para ver dónde he cometido un error y cómo puedo solucionarlo?

<a href="javascript:openSite()">Click to go to a random site</a>
<script>
function openSite() {
var links = [
              "google.com",
              "youtube.com",
              "reddit.com",
              "apple.com"]

            openSite = function() {
              // get a random number between 0 and the number of links
              var randIdx = Math.random() * links.length;
              // round it, so it can be used as array index
              randIdx = parseInt(randIdx, 10);
              // construct the link to be opened
              var link = 'http://' + links[randIdx];
              };
              
    return link;
    
    document.getElementById("link").innerHTML = openSite();
}
</script>