Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-01-2008, 20:24   #1 (permalink)
Rookie_BS
 
Benutzerbild von Rookie_BS
 
Registriert seit: Sep 2004
Beiträge: 730
wo ist der fehler in diesem kurzen script?

es soll ein array[9] mit zufallszahlen von 1 bis 9 gefüllt werden.
dabei soll jede zahl (1 bis 9) nur einmal vorkommen.

also das füllen klappt... nur bei einigen testläufen finden sich zahlen doch doppelt

seit etwa 2stds starre ich da drauf und sehe den fehler nicht.

HTML-Code:
var verteilung:Array = new Array;

function randArray()
{
	for(var a = 0; a < 9; a++)
	{
		var zufall:Number = (Math.floor(Math.random() * (9 - 1 + 1)) + 1);
		for (z = 0; z <= _root.verteilung.length; z++)
		{
			if(_root.verteilung[z] == zufall)
			{
				z = 0;
				zufall = (Math.floor(Math.random() * (9 - 1 + 1)) + 1);
				trace(zufall)
			}
			
		}		
	_root.verteilung[a] = zufall;
	}
	trace(_root.verteilung)
}
randArray();
__________________
Wenn Sie glauben Ihnen ist klar was ich gesagt habe - dann haben Sie mich missverstanden! Alan Greenspan
Rookie_BS ist offline   Mit Zitat antworten
Alt 18-01-2008, 20:30   #2 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Darf ich einen anderen Ansatz vorschlagen?
ActionScript:
  1. var arr:Array = new Array();
  2. for(var i:Number = 0; i<9; i++) arr.push(i);
  3.  
  4. var shuffle:Function = function():Number
  5. {
  6.     return random(2);
  7. }
  8. arr.sort(shuffle);

gruß
sebastian ist offline   Mit Zitat antworten
Alt 18-01-2008, 20:48   #3 (permalink)
Rookie_BS
 
Benutzerbild von Rookie_BS
 
Registriert seit: Sep 2004
Beiträge: 730
sieht...

irgendwie einfacher aus als meinz THX!!!

soweit sogut...
umgesetzt auf mein array (?!) will das "shuffling" nicht so recht? ich nehme alles zurück - glaub ich > trace an falscher stelle! sry

HTML-Code:
for(var i:Number = 1; i<=9; i++) 
{
	_root.verteilung.push(i); 
	trace(_root.verteilung)
}


var shuffle:Function = function():Number
{    
	return random(2);
	trace(_root.verteilung)
}
	
_root.verteilung.sort(shuffle);
eigentlich niederschmetternd wie kompliziert ich scripte... tja ::schluchtzzz::




.
__________________
Wenn Sie glauben Ihnen ist klar was ich gesagt habe - dann haben Sie mich missverstanden! Alan Greenspan

Geändert von Rookie_BS (18-01-2008 um 21:02 Uhr)
Rookie_BS ist offline   Mit Zitat antworten
Alt 18-01-2008, 21:01   #4 (permalink)
Rookie_BS
 
Benutzerbild von Rookie_BS
 
Registriert seit: Sep 2004
Beiträge: 730
funktioniert - supi...

noch mehr freuen würde ich mich wenn mir klar wäre wie genau das "shuffling" geht!

array.sort(shuffle); ... verstehe ich auch nach studium der hilfe noch nicht

in der parameterliste finde ich gar kein "durcheinandergewüfelt" ? is halt alles zum sortieren
__________________
Wenn Sie glauben Ihnen ist klar was ich gesagt habe - dann haben Sie mich missverstanden! Alan Greenspan

Geändert von Rookie_BS (18-01-2008 um 21:27 Uhr)
Rookie_BS ist offline   Mit Zitat antworten
Alt 18-01-2008, 21:58   #5 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Schau am besten mal in die Flash Hilfe.

Du kannst eine Sortierfunktion angeben. Diese hat zwei Parameter, die
verglichen werden. Je nach Rückgabe (0, -1, 1) wird dann sortiert.

In diesem Fall brauchen wir das aber nicht, sondern nur eine Zufallsrückgabe.

grüße
sebastian ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele