Modifiquei um pouco a função atualizaTela() para que próximo das bordas só apareça alvo inteiro.
no sorteiaPosição, limitei o máximo ao valor do eixo - (raio+20) que seria o tamanho do alvo e testei a posição caso fosse menor que raio+20, jogando para a posição (raio+20) fiz um debug imprimindo quando é acionado o if (a para eixo x) (b para eixo y)
function atualizaTela() {
limpaTela();
xAleatorio = sorteiaPosicao(600-(raio+20));
yAleatorio = sorteiaPosicao(400-(raio+20));
if ( xAleatorio < raio + 20 ){
console.log("a"+xAleatorio);
xAleatorio = raio + 20;
console.log("a"+xAleatorio);
}
if ( yAleatorio < raio + 20 ){
console.log("b"+yAleatorio);
yAleatorio = raio + 20;
console.log("b"+yAleatorio);
}
desenhaAlvo(xAleatorio, yAleatorio);
}