Jump to content
amvm

Gerar numeros aleatorios

Recommended Posts

amvm

pretendo receber um vector que vai receber os numeros aleatorios, e o numero de aleatorios a gerar (n). tenho que gerá-los entre 5 e 500 e nenhum deles pode ser repetido.

static int[] gerarAleatorios(int aleatorios[], int n){
        int valor;
        for (int i = 0; i <= n ; i++){
         valor = 5 + (int) (Math.random()*500);
         for (int i1=0;i1<=i;i1++ )
            if (aleatorios[i1] != valor){
               aleatorios[i] = valor; 
            }
      }
        return aleatorios;
    }

eis o meu código, mas está dando erro na aleatorios=valor;

alguma ajuda?

cmps

Share this post


Link to post
Share on other sites
brunoais

Qual é o erro?

Qual é o tamanho de aleatorios?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
amvm

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

        at pl6_demonstrativo2.Main.gerarAleatorios(Main.java:60)

tamanho definido pelo utilizador, passado por parametro como n.

Share this post


Link to post
Share on other sites
RubenFelix

Ainda não percebi bem o que querias fazer com esse código mas tenta tirar o = do teu código nos ciclos for a ver se dá. Mete só < e não <=, dado que com esse erro deves estar a sair do tamanho do vector que passas por parâmetro.

Se estou errado, peço desculpa.

Share this post


Link to post
Share on other sites
brunoais

Se o objectivo for preencher o array todo com números aleatórios não precisas do n.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
aladino77

Viva! Tenho 3 observações a fazer.

A primeira tem a ver com a exceção java.lang.ArrayIndexOutOfBoundsException: 3 . Você Passou ao método um array 3 posições (0,1 e 2) e está a tentar aceder  à posição 3.  O erro está no primeiro for a condição de paragem deve ser i < n e não i <= n

A segunda é que há uma falha na solução que apresenta. Se a função geradora produzir k valores repetidos o array terá n - k números gerados.

A terceira é que você deve garantir uma solução, no caso em que n for maior que 500 - 5. Poderá mandar uma excepção a informar que o gerador só consegue gerar no máximo 500 - 5 números aleatórios.

Share this post


Link to post
Share on other sites
brunoais

Esta parte:

         for (int i1=0;i1<=i;i1++ )
            if (aleatorios[i1] != valor){
               aleatorios[i] = valor;
            }

Precisa de uma bela de uma revisão...

É que acredito que o código:

aleatorios[i] = valor;

Não seja suposto ser executado mais que uma vez a cda ciclo do ciclo for exterior. Ou seja, que só seja executado 0x ou 1x por cda ciclo do 1º ciclo for do método.

valor = 5 + (int) (Math.random()*500);

O que é que fazes quando o número que saír do Math.random()*500 for 500? ou 498? ou 496? Se isso acontecer não cumpres os requisitos!!!

Dá uma olhadela a isto:

http://download.oracle.com/javase/6/docs/api/java/util/Random.html

Acho que juntamente com os outros já foram encontrados os 6 erros mais óbvios 😎.

A terceira é que você deve garantir uma solução, no caso em que n for maior que 500 - 5. Poderá mandar uma excepção a informar que o gerador só consegue gerar no máximo 500 - 5 números aleatórios.

O que é que isso tem a ver com o problema?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.