gerar euromilhoes javacript

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
 
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
 
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));
 
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:
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
 
Back
Topo