1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

gerar euromilhoes javacript

Discussão em 'Web Development' iniciada por alfinete, 9 de Outubro de 2008. (Respostas: 6; Visualizações: 2499)

  1. alfinete

    alfinete Power Member

    tenho este code

    Código:
    
    function calcula_5_euro()
    {
    var num_5 = new Array(5);
    
        for (i=1;i<6;i++)
        {
         num_5[i]=Math.floor(Math.random() * 50)
         document.getElementById('lbl'+i).innerHTML= num_5[i];
        }
                         
    }
    
    gera bem , mas as vezes repete numeros , como posso fazer para não os repetir

    agradecia um help
     
  2. basta um for dentro desse, que vai verificando o array até i a verificar se ja existe esse numero.
     
  3. alfinete

    alfinete Power Member

    problem resolvido

    Código:
    // JScript File
    
    
    
    function arranque()
    {
        for (i=1;i<6;i++)
        {
        document.getElementById('lbl'+i).innerHTML= "";
         
        }
        document.getElementById('lblest1').innerHTML= "";
        document.getElementById('lblest2').innerHTML= "";
    }
    
    function calcula_euro_milhoes()
    {
    calcula_numeros_euro();
    calcula_estrelas();
    }
    
    
    function calcula_estrelas()
    {
    var intInicio=1;
    var intFim=9;
    calcula_geral(intFim,intInicio,3,"lblest");
    
    }
    
    function calcula_numeros_euro()
    {
    var intInicio=1;
    var intFim=50;
    calcula_geral(intFim,intInicio,6,"lbl");
    
    }
    
    // indice - num total de posições do array +1
    // max - num maximo do calculo do random
    // min - num min do calculo do random
    // nomelabel - nome da label onde quer que apareçam os valores
    // calcula qualquer random entre 2 valores que deseje
    function calcula_geral(max,min,indice,nomelabel)
    {
    var intInicio=min;
    var intFim=max;
    
    var num = new Array(indice);
    
     for(i=1; i<indice; i++)
       {
            num [i] = intFim - Math.floor((intFim - intInicio+1) * Math.random());
            for (j=1; j < num.length; j++)
                {
                    if(num[i] == num[j] && i!=j)
                    {
                    num[i] = intFim - Math.floor((intFim - intInicio+1) * Math.random());
                    i=1;
                    }
                 }  
           document.getElementById(nomelabel+''+i).innerHTML= num[i];
          
       }
       
    
     
    }
    
    
    
    
    
    agra tenho outro prob quero fazer uma função para ordenar com um sort(), mas não sei como tirar o array com seus valores da função "calcula_geral" para tratar deles noutro lado

    agradecia um help
     
  4. poes a função calcula_geral a retornar o array e como parametro dessa função sort(); do genero:
    sort(calcular_geral(bla bla,bla bla));
     
  5. p3dro

    p3dro Power Member

    Outra possível solução seria criares um array com os valores todos possíveis (neste caso 1 a 50 ou 1 a 9) e ias gerando sempre aleatoriamente um índice, copiavas o valor desse elemento e removias o índice, isso faz com que quando gerasses outro índice aleatório, o elemento já não estava presente no array, logo não sairia repetido.

    Para fazeres a ordenação podes ver este exemplo.

    Aqui fica +/- um exemplo:

    Código:
    <html>
    <head>
      <script type="text/javascript">
      $ = function(v){return document.getElementById(v);}
    
      RandomizeArray = function(max_elems, generate_n_elems){
        var start_at=1;
        //preencher array com números possiveis 
        var arr=new Array(max_elems);
        for (var i=start_at;i<=max_elems;i++){arr[i-1]=i;}
    
        var count=0, pos=-1;
        var randArray=new Array(generate_n_elems);
        while(count<generate_n_elems){
          pos=Math.floor(Math.random() * arr.length);
          randArray[count]=arr[pos]; //preencher valor
          arr.splice(pos,1); //remover elemento para não repetir
          count++;
        }
    
        return randArray.sort(SortNumber); 
      }
    
      SortNumber = function(a, b) {return a - b;}
    
      RandomEuromilhoes = function(){
        var chave="", estrelas="";
    
        //gerar chave 
        var arr=RandomizeArray(50, 5);
        for (var j=0, count=arr.length; j<count; j++){
          chave+=arr[j]+"; ";
        }
       
        //gerar estrelas
        var arr=RandomizeArray(9, 2);
        for (var j=0, count=arr.length; j<count; j++){
          estrelas+=arr[j]+"; ";
        }
    
        $("res").innerHTML="Chave: "+chave+"<br/>Estrelas: "+estrelas;
      }
      </script>
    </head>
    <body onload="RandomEuromilhoes();">
      <span id="res"></span>
    </body>
    </html>
     
    Última edição: 9 de Outubro de 2008
  6. AliFromCairo

    AliFromCairo Power Member

    Podes sempre ver o source code do gerador de chaves do site de jogos da Santa Casa.
     
  7. alfinete

    alfinete Power Member

    obrigado pelos helps mas prefiro fazer um de raiz

    ja fiz um com 3 files um css, um html e um js , ambos com nome euro

    code css
    __________________________________________________________________


    Código:
    
    BODY
    {
    }
    
    .num
    {
     font-family:Algerian;
     font-size:20px;
     color:white ; 
          
    }
    .campo
    {
     width:60px;
     height:60px;
     background-color :Gray; 
    }
    
    .pos
    {
         position:relative;
         left:15px;  
    }
    
    .tamanho
    {
         width:50px;
     height:50px;
    }
    
    .btn3
        {
        margin-bottom: 2px; 
        border: solid 1px #006600;
        background-color: #008800;
        color: Yellow;
        font-size:x-small;
        height:19px;
        font-family:Arial;
        cursor: pointer;
        }
    
    
    .tabeuro
    {
    border:solid 3px black;    
    }    
    
    .headeuro
    {
    width:200px;    
    background-color:Black; 
    }
    
    
    .titprincipal
    {
        position:relative;
        left:80px;
        top:3px;
        width:200px;
        height:40px;
          
    }
    
    .tit1
    {
       position:relative;
        left:9px;
        top:-3px;
        width:200px;
        height:40px;
        font-size:20px;
        color:white;
        font-weight:bold;
        font-family:Algerian;    
             
    }
    .tit2
    {
     position:absolute;
        left:7px;
        top:0px;
        width:200px;
        height:40px;
        font-size:20px;
        color:#3366FF;
        font-weight:bold;
        font-family:Algerian;    
             
    }
    
    
    
    
    code html
    __________________________________________________________________


    Código:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>euromilhoes</title>
    
        <script type="text/javascript" src="euro.js"></script>
    
        <link rel="STYLESHEET" type="text/css" href="euro.css" />
    </head>
    <body onload="javascript:arranque();">
        <table class="tabeuro">
            <tr>
                <td>
                    <table class="headereuro">
                        <tr>
                            <td >
                                <div class="titprincipal">
                                    <div class="tit1">
                                        Euromilhões
                                    </div>
                                    <div class="tit2">
                                        Euromilhões
                                    </div>
                                </div>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table>
                        <tr>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lbl0" class="num">
                                    </label>
                                </div>
                            </td>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lbl1" class="num">
                                    </label>
                                </div>
                            </td>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lbl2" class="num">
                                    </label>
                                </div>
                            </td>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lbl3" class="num">
                                    </label>
                                </div>
                            </td>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lbl4" class="num">
                                    </label>
                                </div>
                            </td>
                        </tr>
                        <tr>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lblest0" class="num">
                                    </label>
                                </div>
                            </td>
                            <td class="campo">
                                <div class="pos">
                                    <label id="lblest1" class="num">
                                    </label>
                                </div>
                            </td>
                        </tr>
                        <tr>
                        </tr>
                        <tr>
                            <td class="tamanho">
                            </td>
                            <td class="tamanho">
                            </td>
                            <td class="tamanho">
                                <input id="btncalcular" class="btn3" type="button" value="Calcular" onclick="javascript:calcula_euro_milhoes();" />
                            </td>
                            <td class="tamanho">
                                <input id="btnordenar" class="btn3" disabled="disabled" type="button" value="Ordenar"
                                    onclick="javascript:ordena();" />
                            </td>
                            <td class="tamanho">
                                <input id="btnlimpar" class="btn3" disabled="disabled" type="button" value="limpar"
                                    onclick="javascript:limpaeuro();" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </body>
    </html>
    
    
    
    

    code js
    __________________________________________________________________


    Código:
    
    
    // JScript File
    
    var euronumeros = new Array(5);
    var euroestrelas = new Array(2);
    //var numt = new array();
    //var num2 = new array(2);
    
    
    /***********************************************************************************************************/
    /*                               funcoes eventos                                                           */
    /***********************************************************************************************************/
    
    function arranque()
    {
        for (i=0;i<5;i++)
        {
        document.getElementById('lbl'+i).innerHTML= "";
         
        }
        document.getElementById('lblest0').innerHTML= "";
        document.getElementById('lblest1').innerHTML= "";
    }
    
    function calcula_euro_milhoes()
    {
    calcula_numeros_euro();
    calcula_estrelas();
    document.getElementById('btnordenar').disabled=false;
    document.getElementById('btnordenar').disabled=false;
    document.getElementById('btnlimpar').disabled=false;
    }
    
    function ordena()
    {
    ordena_numeros_euro();
    ordena_estrelas_euro();
    document.getElementById('btnordenar').disabled=true;
    document.getElementById('btncalcular').disabled=true;
    document.getElementById('btnlimpar').disabled=false;
    }
    
    function limpaeuro()
    {
     for (i=0;i<5;i++)
        {
        document.getElementById('lbl'+i).innerHTML= "";
         
        }
        document.getElementById('lblest0').innerHTML= "";
        document.getElementById('lblest1').innerHTML= "";
        
        euronumeros = null;
        euroestrelas = null;
        
        Inicioe = null;
        Fime = null;
        
        Inicion = null;
        Fimn = null;
        
        num = null;
        num2 = null;
        
        euro= null;
        euroest =null;
        
        document.getElementById('btnlimpar').disabled=true;
        document.getElementById('btnordenar').disabled=true;
        document.getElementById('btncalcular').disabled=false;
    }
    
    /***********************************************************************************************************/
    /*                               ordenacao dos numeros                                                     */
    /***********************************************************************************************************/
    
    
    
    function ordena_numeros_euro()
    {
    var euro = euronumeros.sortnum();
    
       for (i=0;i<5;i++)
        {
        document.getElementById('lbl'+i).innerHTML= euro[i];
        }
    }
    
    function ordena_estrelas_euro()
    {
    var euroest = euroestrelas.sortnum();
    
       for (i=0;i<2;i++)
        {
        document.getElementById('lblest'+i).innerHTML= euroest[i];
        }
    }
    
    //ordena numeros
    Array.prototype.sortnum = function() {
      return this.sort(function(){return arguments[0] - arguments[1];});
    }
    
    
    
    /***********************************************************************************************************/
    /*                               calculo dos numeros                                                       */
    /***********************************************************************************************************/
    function calcula_estrelas()
    {
    var Inicioe=1;
    var Fime=9;
    calcula_geral_euro_2(Fime,Inicioe,2,"lblest");
    
    }
    
    function calcula_numeros_euro()
    {
    var Inicion=1;
    var Fimn=50;
    calcula_geral_euro(Fimn,Inicion,5,"lbl");
    }
    
    // indice - num total de posições do array +1
    // max - num maximo do calculo do random
    // min - num min do calculo do random
    // nomelabel - nome da label onde quer que apareçam os valores
    // calcula qualquer random entre 2 valores que deseje
    
    function calcula_geral_euro(max,min,indice,nomelabel)
    {
    var intInicioe=min;
    var intFime=max;
    
    var num = new Array(indice);
    
     for(i=0; i<indice; i++)
       {
            num [i] = intFime - Math.floor((intFime - intInicioe+1) * Math.random());
            for (j=1; j < num.length; j++)
                {
                    if(num[i] == num[j] && i!=j)
                    {
                    num[i] = intFime - Math.floor((intFime - intInicioe+1) * Math.random());
                    i=1;
                    }
                 }  
           document.getElementById(nomelabel+''+i).innerHTML= num[i];
          
       }
      
       
    euronumeros=num;
    return euronumeros;
     
    }
    
    // calcula as 2 estrelas
    function calcula_geral_euro_2(max,min,indice,nomelabel)
    {
    var intInicio=min;
    var intFim=max;
    
    var num2 = new Array(indice);
    
     for(i=0; i<indice; i++)
       {
            num2[i] = intFim - Math.floor((intFim - intInicio+1) * Math.random());
            for (j=1; j < num2.length; j++)
                {
                    if(num2[i] == num2[j] && i!=j)
                    {
                    num2[i] = intFim - Math.floor((intFim - intInicio+1) * Math.random());
                    i=1;
                    }
                 }  
           document.getElementById(nomelabel+''+i).innerHTML= num2[i];
          
       }
      
       
    euroestrelas=num2;
    return euroestrelas;
     
    }
    
    
    
    
    
    esta a 99 % a funcionar tem um bug que eu descobri que não sei onde está que é o seguinte...

    gera bem os 5 numeros do euromilhões sem repetir numeros numa sequaencia de mesmos..

    na geração das estrelas de vês emquando gera duas estrelas iguais

    agradecia a alguem que me ajuda-se a descobrir o bug

    brigada
     

Partilhar esta Página