Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: generowanie liczb
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
right6
mam problem jak w js, wygenerowac, w petli, iles tam liczb od 1-20, ale zeby byly rozlozone losowo, i kazda z nich wystepowala dwa razy.
wiec bedziemy miec w sumie 40 liczb.
LBO
daleko temu od optymalnego rozwiazania (I think, ale funkcja wykonuje to o co prosiles):

Kod
<script>
//generates random integer <start, end)
function rand(intStart, intEnd) {
   return intStart + Math.floor(Math.random() * (intEnd - intStart));
}

function right6Generator(intStart, intEnd) {
   var arrNumbers = new Array();
   var i = 0;
   while (intStart <= intEnd) {
       arrNumbers[i++] = intStart;
       arrNumbers[i++] = intStart++;
   }
   /*document.write('------------arrNumber--------------<br />');
   for (i = 0; i < arrNumbers.length; i++) {
       document.write(arrNumbers[i] + '<br />');
   }*/
   var arrResult = new Array();
   for (i = arrNumbers.length - 1; i >= 0; i--) {
       intIndex = rand(0, i + 1);
       arrResult[i] = arrNumbers.splice(intIndex, 1);
   }
   /*document.write('------------arrResult--------------<br />');
   for (i = 0; i < arrResult.length; i++) {
       document.write(arrResult[i] + '<br />');
   }*/
   return arrResult;
}
</script>


wykorzystanie (dla twojego przykladu):

Kod
right6Generator(1, 20);


edit: wykomentowane czesci kodu mozesz usunac, sluza tylko do debugowania...
right6
albo zle cos robie, albo cos niedziala dry.gif

Kod
<html>
      <head>
          <script language="JavaScript" type="text/javascript">

function rand(intStart, intEnd) {
  return intStart + Math.floor(Math.random() * (intEnd - intStart));
}

function right6Generator(intStart, intEnd)
{
  var arrNumbers = new Array();
  var i = 0;
  while (intStart <= intEnd)
  {
      arrNumbers[i++] = intStart;
      arrNumbers[i++] = intStart++;
  }

  var arrResult = new Array();
  for (i = arrNumbers.length - 1; i >= 0; i--)
  {
      intIndex = rand(0, i + 1);
      arrResult[i] = arrNumbers.splice(intIndex, 1);
  }

  return arrResult;
}
</script>
      </head>

<body>

<div onclick="right6Generator(1, 20)">aaaa</div>

</body>

</html>
LBO
moja funkcja zwraca Tablice... sam musisz sie zatroszczyc o jej wypisanie na ekran
dr_bonzo
Dla mnie zagmatwane.
Moje rozwiazanie:
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title></title>
        <script type="text/javascript">
            function createRandomNumbersRepeatedTwice( count, min, max )
            {
                numbers = new Array();
                var i;
                
                for ( i = 0; i < count; i++ )
                {
                    numbers[ i ] = createRandomNumber( min, max );
                }
                
                duplicatedNumbers = duplicateNumbers( numbers );
                shuffledNumbers = shuffleNumbers( duplicatedNumbers );
                
                return shuffledNumbers;
            }
            
            function shuffleNumbers( numbers )
            {
                return numbers.sort(    function randomlyCompareElements( a, b )
                                        {
                                            return Math.floor( Math.random() * 3 - 1 );
                                        } );
            }
            
            function duplicateNumbers( numbers )
            {
                return numbers.concat( numbers );
            }
            
            function createRandomNumber( min, max )
            {
                return Math.floor( Math.random() * ( max - min ) + min );
            }
        </script>
    </head>
    <body onload="alert( createRandomNumbersRepeatingTwice( 4, 1, 20 ) );">
    </body>
</html>
right6
i tez mi nie wysaietla ... nic ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.