[GastForen Programmierung/Entwicklung JavaScript Zufallsgenerator

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Zufallsgenerator

Anonym
Beiträge gesamt: 22827

27. Nov 2004, 17:38
Beitrag # 16 von 23
Beitrag ID: #127502
Bewertung:
(2568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank, das Script mit dem Sätze mischeln hat schonmal geklappt. ^_^
Jetzt muss ich nur noch schauen ob ich meinen ganzen Javascriptcode da ebensogut reinbringe..vielleicht meld ich mich wieder wenns nen Fehler gibt.


als Antwort auf: [#124402]
X

Zufallsgenerator

Larvarin
Beiträge gesamt: 53

28. Nov 2004, 18:36
Beitrag # 17 von 23
Beitrag ID: #127562
Bewertung:
(2568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jetzt steh ich vor ner neuen kniffligen Aufgabe:
Ich habe eine Tabelle, mit zwei Spalten. In jeder dieser Spalte sollen Worte stehen, in zufälliger Reihenfolge, aber so, dass die links und die rechts zu einander passen. Also mit unserem Beispiel folgendermassen:

Sagen wir auf der einen Seite steht das Objekt, auf der anderen Seite die Farbe, also z.B.
Nacht | Schwarz
Baum | Gruen
Blume | Gelb
etc.

Dazu mach ich zwei Arrays, eines mit den Objekten, das andere mit den Farben. Aber wie bringe ich die beiden Arrays dazu, dass sie sich auf die genau gleiche Art mischeln? Ich habs schon folgendermassen versucht: (das Array mit den Farben heisst extra. Ich hab alle Zeilen die ich selbst dazugefügt habe mit drei Sternen markiert. Und der einfachheit halber sorgt dieses Script hier nur dafür, dass die beiden Arrays untereinander erscheinen, nicht nebeneinander in einer Tabelle. Aber das Grundprinzip ist dasselbe: ich will dass die Reihenfolge bei beiden gleich ist. Wenn also beim ersten "Nacht" an erster Stelle steht, sollte beim zweiten "schwarz" an erster Stelle stehn, etc.)

var anzahl = text.length;
var i = anzahl;
var temp
***var temp2
while (i--) {
var j = Math.floor(Math.random() * anzahl);
temp = text; text = text[j]; text[j]= temp;
***temp2 = extra; extra = extra[j]; extra[j]= temp2l;
}
for(var i=0;i < anzahl; i++){
document.write(text + '<br>');
}
***for(var i=0;i < anzahl; i++){
***document.write(extra + '<br>');
***}

EDIT: hoppla, sorry, ich habe den Fehler eben bemerkt: ich hatte mich bloss verschrieben, indem ich nämlich "temp21" statt "temp2" hingeschrieben hatte. Tut mir leid. ^_^ Naja, aber vielleicht kann jetzt jemand aus meinem Post schlauer werden. :)


als Antwort auf: [#124402]
(Dieser Beitrag wurde von Larvarin am 28. Nov 2004, 18:40 geändert)

Zufallsgenerator

Larvarin
Beiträge gesamt: 53

16. Dez 2004, 18:16
Beitrag # 18 von 23
Beitrag ID: #131048
Bewertung:
(2568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jetzt ist eine neue Schwierigkeit aufgetreten, ich hoffe jemand kann mir helfen:

Wie kann ich die arrayobjekte so durchmischen, dass jeweils zwei zusammenbleiben?
Als Beispiel:
Angenommen das Nomen und die Farbe sind im selben array, und ich moechte Zeile fuer Zeile erst die Farbe und dann das Nomen schreiben. Im Array waeren die zwei die immer zueinander gehoeren nacheinander, also
blau,
Himmel,
gelb,
Sonne,
gruen,
Gras,
schwarz,
Nacht

Gibts da ne Moeglichkeit wie ich die durchmischeln koennte damit "Himmel" immer nach "blau" kommt u.s.w?


als Antwort auf: [#124402]

Zufallsgenerator

oesi50
  
Beiträge gesamt: 2315

16. Dez 2004, 18:28
Beitrag # 19 von 23
Beitrag ID: #131049
Bewertung:
(2568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja, da musst Du die ein zweidimensionales Array anlegen.


var text = new Array();

text[0] = new Array('blau', 'Himmel');
text[1] = new Array('gelb', 'Sonne');

usw.

der Rest geht wie gehabt, allerdings ist jetzt zu beachten, dass

text[0] wiederum ein Array ist.


zb.

zeile = text[0] ergibt

zeile[0] -> blau
zeile[1] -> Himmel



Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#124402]

Zufallsgenerator

Larvarin
Beiträge gesamt: 53

16. Dez 2004, 18:52
Beitrag # 20 von 23
Beitrag ID: #131055
Bewertung:
(2568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hmm, wie schreib ich dann z.B. ein solches einzelnes Objekt auf, also z.B. nur "Himmel?"

document.write(text[0][1]) ?

Was wuerde kommen wenn ich schreiben wuerde "document.write(text[0])"?


Und, wenn ich dieses 2D-Array durchmischen muss, dann sollte glaub ich das gleiche funktionieren wie oben, oder?

var anzahl = text.length;
var i = anzahl;
var temp
while (i--) {
var j = Math.floor(Math.random() * anzahl);
temp = text; text = text[j]; text[j]= temp;
}


als Antwort auf: [#124402]

Zufallsgenerator

oesi50
  
Beiträge gesamt: 2315

16. Dez 2004, 19:36
Beitrag # 21 von 23
Beitrag ID: #131058
Bewertung:
(2553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#124402]

Zufallsgenerator

Larvarin
Beiträge gesamt: 53

16. Dez 2004, 19:38
Beitrag # 22 von 23
Beitrag ID: #131059
Bewertung:
(2553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nur zur Sicherheit: Bezieht sich das "Ja" auf beide Fragen?
Ich schreib also:
"document.write(text[0][1])"
um ein einzelnes Objekt auszuspucken, und ich mischle das Array folgendermassen durch:

var anzahl = text.length;
var i = anzahl;
var temp
while (i--) {
var j = Math.floor(Math.random() * anzahl);
temp = text; text = text[j]; text[j]= temp;
}

?


als Antwort auf: [#124402]

Zufallsgenerator

oesi50
  
Beiträge gesamt: 2315

16. Dez 2004, 19:44
Beitrag # 23 von 23
Beitrag ID: #131060
Bewertung:
(2553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja und ja

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#124402]
(Dieser Beitrag wurde von oesi50 am 16. Dez 2004, 19:44 geändert)
X