Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Método para criar nome usando Random

Preciso criar um método para criar o nome de uma pessoa, mas sou obrigado a criar este método usando random para gerar letras aleatórias, alguém pode me ajudar por favor, a criar este método ou me mostra um método meio que parecido, lembrando que este método preciso chamar ele no meu programa principal

9 respostas

Boa noite!

Eu estou pensando aqui nas regras para criar esse programa. Que linguagem você vai usar?

As regras que penso seria assim. Veja o que acha.

O programa ia criar nomes novos e aleatórios. Teríamos desde Beto, até Jagomo que é um nome que não existe comumente.

Primeiro o programa ia sortear quantas sílabas vai ter o nome, a maioria dos nomes tem 2 ou 3 silabas, então sortearia de 2 a 3 silabas.

Daria pra fazer algo bem mais rebuscado mas vamos simplificar. A estrutura das silabas é consoante e uma vogal.

Então sorteia um número de 1 a 5 para as vogais (AEIOU). E pega a letra da posição sorteada.

E pra consoante de 1 a 21 para consoantes (BCDFGHJKLMNPQRSTWVXYZ). E pega a letra da posição sorteada.

Repete denovo pra criar a segunda sílaba, e repete se tiver 3 sílabas para pegar a última silába.

O que acha?

A galera sabe que eu to aqui dando refresh nos sem resposta sem parar até encontrar um desafio para fazer rsrsrs.

Aqui está https://codepen.io/neoandrevictor/pen/NEJGgg?editors=0110

Fiz em javascript mas dá para adaptar para qualquer linguagem que for usar.

function getNomeAleatorio(){

  let quantidadeDeSilabas=getRandomIntInclusive(2,3);
  let nome="";

  for (contadorSilaba=1;contadorSilaba<=quantidadeDeSilabas;contadorSilaba++){

    nome=nome +  getConsoanteAleatoria() + getVogalAleatoria() ;

  }

  return nome;

}

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function getVogalAleatoria(){

  let listaVogais="AEOIU";
  let numeroAleatorio=getRandomIntInclusive(1, 5);

  return listaVogais.substring(numeroAleatorio-1,numeroAleatorio);

}

function getConsoanteAleatoria(){

  let listaConsoantes="BCDFGHJKLMNPQRSTWVXYZ";
  let numeroAleatorio=getRandomIntInclusive(1, 21);

  return listaConsoantes.substring(numeroAleatorio-1,numeroAleatorio);

}

document.write(getNomeAleatorio());
document.write("<br>");
document.write(getNomeAleatorio());
document.write("<br>");
document.write(getNomeAleatorio());
document.write("<br>");
document.write(getNomeAleatorio());
document.write("<br>");
document.write(getNomeAleatorio());
document.write("<br>");
document.write(getNomeAleatorio());

Uma saída aleatória possível:

XODAGE BEQI MINIVU COMAKE VEWULI CIBAQI

Dá para tirar as consoantes como Q e X que dificilmente tem nome. Mas são nomes dignos de uma história de fantasia.

eu uso a linguagem java, seu código ficou muito massa, eu vou tentar implementar ele aqui, sobre o programa o professor não pediu restrições na hora de gerar, ele só quer que gere com letras aleatórias, como você faz pra desenvolver códigos assim tão rápido ? eu consigo poucas vezes desenvolver códigos criativos, não sei se é porque tô no primeiro ano da faculdade ainda, mas agradeço o código

eu só conseguir implementar este código, eu preciso gerar um nome com 15 letras aleatória, não sei se tem como melhorar este método.

 Random random = new Random();

        String letras = "ABCDEFGHIJKLMNOPQRSTUVYWXZ";
        String auxiliarNome = "";
        String armazenaNome = "";
        for (int nome = 0; nome < 15; nome++) {
            auxiliarNome = random.nextInt(letras.length());
            armazenaNome += letras.substring(auxiliarNome, auxiliarNome + 1);

        }
solução!

Eu consigo desenvolver códigos rápidos porque trabalho com isso. É a experiência do dia a dia e as pessoas pedindo as coisas para ontem rsrsrsrs.

O melhor jeito de programar rápido esses algoritmos é pegar um livro de matemática e tentar resolver aquelas questões só usando código.

Enfim eu modifiquei o meu código para ficar como você precisa.

function getNomeAleatorio(){

  let nome="";

  for (contadorLetra=1;contadorLetra<=15;contadorLetra++){

    nome=nome +  getLetraAleatoria();

  }

  return nome;

}

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function getLetraAleatoria(){

  let listaLetras="ABCDEFGHIJKLMNOPQRSTUVYWXZ";
  let numeroAleatorio=getRandomIntInclusive(0, 25);

  return listaLetras.substring(numeroAleatorio,numeroAleatorio+1);

}


document.write(getNomeAleatorio());

Mas se seu código funciona cara, ele tá bom sim. O importante no mundo dos algoritimos é ser entendível (eu entendi seu código) e rápido.

E em termos de velocidade o seu código está tão rápido como o meu (é tão rápido o cálculo que nem dá para comparar) . Pra mim tá bom como você programou.

eu conseguir implementar o seu código, agora ficou show no programa, obrigado por me ajudar com o exercício, eu vou fazer isso nas férias tentar resolver exercícios de livro de matemática. Você sabe me indicar um livro bom pra eu prática exercícios

 public String getNomeAleatorio() {
        // String letras = "ABCDEFGHIJKLMNOPQRSTUVYWXZ";
        int quantidadeDeSilabasNome;

        // getRandonIntInclive o mínimo de letras a ser gerado é o e o máximo 15
        quantidadeDeSilabasNome = getRandomIntInclusive(8, 8);

        String nome = "";

        for (int contadorSilaba = 1; contadorSilaba < quantidadeDeSilabasNome; contadorSilaba++) {
            nome = nome + getConsoanteAleatorio() + getVogalAleatorio();
        }
        return nome;
    }

    public String getSobreNomeAleatorio() {
        String sobreNome = " ";
        // getRandonIntInclive o mínimo de letras a ser gerado é o e o máximo 15
        int quantidadeDeSilabasSobreNome = getRandomIntInclusive(10, 10);

        for (int contadorSilaba = 1; contadorSilaba < quantidadeDeSilabasSobreNome; contadorSilaba++) {
            sobreNome = sobreNome + getConsoanteAleatorio() + getVogalAleatorio();
        }
        return sobreNome;
    }

    private int getRandomIntInclusive(int minimo, int maximo) {
        minimo = (int) Math.ceil(minimo);
        maximo = (int) Math.ceil(maximo);
        return (int) (Math.floor(Math.random() * (maximo - minimo + 1)) + minimo);

    }

    private String getVogalAleatorio() {
        // Gerando vogais aleatória
        String listaVogais = "AEIOU";
        int numeroAleatorio;

        // Gerando vogais aleatórias o método getRandomIntInclusive gera no mínimo 3 e no máximo 5
        numeroAleatorio = (int) getRandomIntInclusive(1, 5);
        return listaVogais.substring(numeroAleatorio - 1, numeroAleatorio);

    }

    private String getConsoanteAleatorio() {
        // Gerando consoantes aleatória
        String listaConsoantes = "BCDFGHJKLMNPQRSTWVXYZ ";
        int numeroAleatorio;
        // Gerando vogais aleatórias o método getRandomIntInclusive gera no mínimo 1 e no máximo 21
        numeroAleatorio = getRandomIntInclusive(1, 21);

        return listaConsoantes.substring(numeroAleatorio - 1, numeroAleatorio);

    }

pra eu melhorar meu desenvolvimento ?

Que bom que chegou ao resultado desejado.

Não sei nenhum livro de matemática para indicar não, mas o primeiro PDF gratuito que achar no Google pega. A matemática é praticamente a mesma desde a época de nossos avós.

vou precisar da sua ajuda novamente, o professor não aceitou este método como fiz, eu disse que preciso gera as letras usando random, ele disse que não estou usando o random, pois preciso gerar as letras usando a tabela ascii, parece que tem ela no java, pode me ajudar com isso ?

eu não sou tão bom em java. como esse tópico está solucionado abre um novo na parte de fórum de java e coloca os códigos e explica a situação para o pessoal te ajudar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software