Forum Doku Wiki Blog

Forumsarchiv 2005, Februar
Lottozahlen

archivierte Beiträge lesen

  1. (JAVASCRIPT) Lottozahlen von Topher, 16. 02. 2005, 08:51

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 08:51 Uhr von Topher veröffentlicht.

Moin

Ich brauch hilfe!
Sinn und zweck meines Scripts ist 6 Lottozahlen zu generieren die zwischen 1 und 49 liegen keine darf sich wiederholen!

Mein Vorschlag sieht so aus leider ist er fehlerhaft! Bitte helft mir:

<HTML>
<HEAD>
<TITLE>Topher ist der grösste</TITLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--
var a;b;c;d;e;f;
function Mist()
{
a=Math.round(Math.random()*50);
a=parseFloat(a);
if(a<1||a>49)
{Mist();}
b=Math.round(Math.random()*50);
b=parseFloat(b);
if(b<1||b>49)
if(a!=b)
{Mist();}
c=Math.round(Math.random()*50);
c=parseFloat(c);
if(c<1||c>49)
if(a!=b!=c)
{Mist();}
d=Math.round(Math.random()*50);
d=parseFloat(d);
if(d<1||d>49)
if(a!=b!=c!=d)
{Mist();}
e=Math.round(Math.random()*50);
e=parseFloat(e);
if(e<1||e>49)
if(a!=b!=c!=d!=e)
{Mist();}
f=Math.round(Math.random()*50);
f=parseFloat(f);
if(f<1||f>49)
if(a!=b!=c!=d!=e!=f)
{Mist();}
document.write("Die Zahlen sind"+a+"<br>"+b+"<br>"+c+"<br>"+d+"<br>"+e+"<br>"+f+"<br>");
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="Mist()">
</BODY>
</HTML>

Danke

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 09:07 Uhr von Cheatah veröffentlicht.

Hi,

> Mein Vorschlag sieht so aus leider ist er fehlerhaft!

wie definiert sich "fehlerhaft"?

> a=Math.round(Math.random()*50);
> a=parseFloat(a);
> if(a<1||a>49)

Aua. Welche Werte liefert Math.random(), und wie macht man daraus ganzzahlige Werte zwischen 1 einschl. und 49 einschl.?

> b=Math.round(Math.random()*50);

Nein, oder? Du möchtest tatsächlich sechs voneinander unabhängige Variablen füllen? Den Begriff "Array" hast Du aber schon mal gehört, oder?

> document.write("Die Zahlen sind"+a+"<br>"+b+"<br>"+c+"<br>"+d+"<br>"+e+"<br>"+f+"<br>");

Wo ist Deine Prüfung auf Wiederholung? Das Problem lässt sich zwar auch ohne eine solche Prüfung lösen, aber nicht bei Deinem Ansatz.

> <BODY onLoad="Mist()">

onload etwas mit document.write() ausgeben zu wollen ist zu spät.

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 09:33 Uhr von afra veröffentlicht.

Hi Cheatah!

So kommt der aber auch nicht weiter. ;o)

@Topher: Versuch mal ein Array mit 49 Zahlen zu füllen und mittels slice() und random http://de.selfhtml.org/javascript/objekte/array.htm#slice diese daraus zu extrahieren. Das ist ein Vierzeiler und funktioniert ohne Prüfung ob was doppelt ist.

Afra

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 11:56 Uhr von Oll Lee veröffentlicht.

Hallo Afra,

Deine Idee ist ganz gut. Denke aber, dass er mit der splice-Methode http://de.selfhtml.org/javascript/objekte/array.htm#splice das Problem besser angehen kann.

So ungefähr:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
 <title>Untitled</title>
<script>
function bla (){
var i;
var arrzahlen = new Array(49);
var temp = '';

for (i=0;i<49;i++)
 arrzahlen[i]=i+1;

for (i=1;i<7;i++)
 temp += 'Zahl: ' + i + '   Wert: ' + arrzahlen.splice(Math.round((arrzahlen.length-1)*Math.random()),1) + '<br>';

dingens.innerHTML =temp;
}
</script>

</head>

<body onload="bla()">
<div id="dingens"></div>


</body>
</html>

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 16:40 Uhr von afra veröffentlicht.

Hi Oll Lee!

Das finde ich jetzt aber Jocke wie Hose.

Schönen Gruß
--
Heute schon gepixelt?
http://www.pixel-plaza.de/index.php?module=profile&subName=house&itemID=154

Lottozahlen

Der folgende Beitrag wurde am 18. 02. 2005, 14:25 Uhr von Topher veröffentlicht.

Danke Leutz habt mir echt geholfen!

Cheetah hat mir zwar auch geholfen könnte aber an seinen umgangsformen arbeiten aber auch danke an dich.

THX Topher

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 12:01 Uhr von Cheatah veröffentlicht.

Hi,

> So kommt der aber auch nicht weiter. ;o)

wieso meinst Du das?

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 16:41 Uhr von afra veröffentlicht.

Hallo Cheatah,
Ich fand es einfach ein bisschen spitz formuliert. Wenn er wirklich ein Problem damit hat, kommt er so halt nur schwer weiter. Oder?

Schönen Gruß
--
Heute schon gepixelt?
http://www.pixel-plaza.de/index.php?module=profile&subName=house&itemID=154

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 10:17 Uhr von Günter Laudenklos veröffentlicht.

Hallo Topher,

> Ich brauch hilfe!
> Sinn und zweck meines Scripts ist 6 Lottozahlen zu generieren die zwischen 1 und 49 liegen keine darf sich wiederholen!
>

da habe ich noch einen alten Code-Schnipsel:

<html>
<head>
<script type="text/javascript">
function Numsort(a,b)
{ return a-b; }

function Lotto()
{
 var a = new Array();
 var e, i;

 while(a.length < 6)
 {
  e = 1+Math.round(Math.random()*48);
  for(i=0;i<a.length;i++)
  { if(e == a[i]) break; }
  if(i == a.length) a.push(e);
 }

 a.sort(Numsort);

 document.getElementById('number').innerHTML = a.join(', ');
}
</script>
</head>
<body onload="Lotto()">
<div id="number"></div>
</body>
</html>

Gruß
Günter

Lottozahlen

Der folgende Beitrag wurde am 16. 02. 2005, 14:53 Uhr von Daniel Thoma veröffentlicht.

Hallo Topher,

random() liefert Fließkommazahlen zwischen 0 und 1.
Du brauchst also erst mal eine Funktion, die Dir natürliche Zahlen aus einem Intervall zurückgibt.

int intRandom(int a, int b) {
   int result = floor((b - a + 1) * random());
   if(result > b) {
       result = b;
   }
   return result;
}

Auswählen willst Du Elemente aus einer Menge, also schreibst Du diese am besten mal auf. Dafür eignet Sich ein Array:

int[] zahlen = new int[] {1..49};

Nun musst Du nur noch 6 Zahlen daraus auswählen:

int[] lotto() {
    int[] zahlen = new int[] {1..49};
    int[] result = new int[6];
    for(int i in 0..5) {
        int pos = intRandom(zahlen.first, zahlen.last);
        result[i] = zahlen[pos];
        zahlen.remove(pos);
    }
    return result;
}

Das ist blos Pseudocode, aber die Idee sollte klar werden.

Grüße

Daniel

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4