Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-11-2006, 10:59   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 19
Zufallszahlen nicht doppelt

Hallo,
ich habe folgendes Skript hier gefunden. Das funktioniert soweit auch bei mir.
Allerdings habe ich jetzt verzweifelt versucht, immer nur EINE Zahl des Arrays in einem Textfeld auszugeben. Per Return möchte ich eine neue Zahl in ein Textfeld laden. Kann mir jemand helfen? Ich möchte auch nicht, dass das Skript immer wieder neu ausgeführt wird, sonst habe ich die Zahlen ja zwangsläufig doppelt, oder?


DANKE!!


PHP-Code:
Number.zufallOW = function(zahl) {
    var 
nrListe = new array();
    for (var 
1<= zahli++) {
        
nrListe[i] = i;
        }
    var 
zufallList = new array();
    for (var 
nrListe.length 10i--) {
        var 
wahl Math.floor(Math.Random() * i) + 1;
        
zufallList[1] = nrListe[wahl];
        
nrListe[wahl] = nrListe[i];
        }
        return 
zufallList;
};
            
trace(Number.zufallOW(110)); 
motzi ist offline   Mit Zitat antworten
Alt 07-11-2006, 11:06   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!

...und wieviele Zahlen willst du insgesamt ausgeben? Im Prinzip kannst du einfach das Array mischen und dann immer der Reihe nach von 0 bis Ende durchlaufen. Dann ggf. neu mischen (oder halt auch nicht).
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 07-11-2006, 11:26   #3 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
Moin!

Hier ist ein kleines Beispiel, was Du einfach mal in einer neuen FLA testen kannst.
Code:
var zahlVon = 0;
var zahlBis = 10;
var zahlenArray = new Array();
for (var i = zahlVon; i <= zahlBis; i++)
{
	zahlenArray.push(i);
}
function randomOrder(a, b)
{
	return random(3) - 1;
}
trace("Alle Zahlen von " + zahlVon + " bis " + zahlBis + " sortiert: " + zahlenArray);
zahlenArray.sort(randomOrder);
trace("Alle Zahlen von " + zahlVon + " bis " + zahlBis + " durcheinander: " + zahlenArray);
var ranNrPos = 0;
function newRandomNr()
{
	var n = zahlenArray[ranNrPos];
	ranNrPos++;
	return n;
}
trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());
trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());
trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());
trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());
trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());
trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());
// usw...
Bis dann,
querkopf
__________________
Alles ist wie immer. Nur schlimmer.
querkopf ist offline   Mit Zitat antworten
Alt 07-11-2006, 12:45   #4 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 19
Ziehen ohne Zurücklegen

Danke soweit! Ich möchte 110 Zahlen auslesen, da erscheint mir die vorgeschlagene Variante etwas zu lang ... oder ich verstehe es mal wieder nicht.

Habe unterdessen herausgefunden, dass das was ich will "ziehen ohne zurücklegen" heißt ... das beschreibt auch das, was ich möchte, bin aber kein Statistiker ... Habe dazu hier noch folgendes gefunden, ich denke das ist das richtige, dass kann ich aber leider nicht umsetzen ...

PHP-Code:
// konstruktor 
function zufall (min,max) { 
    
this.min=min
    
this.max=max
    
this.liste=new array(); 

// methode 
zufall.prototype.berechnen = function () { 
    if (
this.liste.length == 0) { 
        for (
0<= (this.max this.min); i++) { 
            
this.liste[i] = this.min i
        } 
    } 
    
pos Math.floor(Math.random() * (this.liste.length 0.01)); 
    
ausgabe this.liste[pos]; 
    
this.liste.splice(pos1); 
    return 
ausgabe



HILFE!
motzi ist offline   Mit Zitat antworten
Alt 07-11-2006, 13:06   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Da ist nix zu lang. 110 Zahlen in ein Array packen und dann mischen und das war's.
PHP-Code:
var zahlVon 1;
var 
zahlBis 110;
var 
zahlenArray = new Array();
for (var 
zahlVoni<=zahlBisi++) {
    
zahlenArray.push(i);
}
function 
randomOrder() {
    return 
random(3)-1;
}
trace("Alle Zahlen von "+zahlVon+" bis "+zahlBis+" sortiert: "+zahlenArray);
zahlenArray.sort(randomOrder);
trace("Alle Zahlen von " zahlVon " bis " zahlBis " durcheinander: " zahlenArray); 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 07-11-2006, 14:48   #6 (permalink)
will code HTML for food
 
Benutzerbild von querkopf
 
Registriert seit: Mar 2003
Beiträge: 1.232
@motzi ... sorry, aber ein wenig weiter denken solltest Du schon...
"trace("Die Zufallszahl an Position "+ranNrPos+" ist: "+newRandomNr());" war ein BEISPIEL!
Natürlich sollst Du nicht 110x diese Zeile schreiben!
Du sollst Dir den Code angucken und verstehen. Dann kannst Du zB die Ausgabe einer Zufallszahl auf einen Button legen, in eine andere function packen sonstwas.
Du mußt den Dir gegebenen Code für Dich anpassen!


Bis dann,
querkopf
__________________
Alles ist wie immer. Nur schlimmer.
querkopf 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 12:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele