Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-08-2003, 09:45   #1 (permalink)
kenntEinenDerFlashKann
 
Benutzerbild von Aule
 
Registriert seit: Mar 2002
Ort: sauerland
Beiträge: 220
zufallszahl zwischen -5 und 5, aber NIE 0

ich will per AS eine Integer-Zufallszahl zwischen -5 und 5 erzeugen, das Ergebnis darf aber nie =0 sein. Und ich will aus Performancegründen keine "if"- anweisung verwenden.

Mein erster Gedankengang:
ActionScript:
  1. (Math.random()*10)-5; // ergibt eine FLoat -5 bis 5
  2.  
ist zwar insofern gut, daß die Wahrscheinlichkeit, genau 0 zu haben, sehr gering ist, aber ich brauche ja außerdem eine Ganzzahl.

Also - runden:
ActionScript:
  1. Math.round((Math.random()*10)-5); // ergibt eine Integer -5 bis 5
  2.  
jetzt ist aber die Wahrscheinlichkeit, daß 0 rauskommt noch höher.

Dann eine neue Idee - erst eine Zahl zwischen 1 und 5 erzeugen, und diese dann per Zufall in eine negative Zahl umwandeln:
ActionScript:
  1. (random(4)+1) * ((Math.random()*2)-1
ist um Grunde dasselbe wie das erste Script...

kann man mit AS eigentlich auch "nur" aufrunden und niemals abrunden?

wer hat ne bessere Idee?

gruß aule
__________________
...life is just a workaround...
Aule ist offline   Mit Zitat antworten
Alt 28-08-2003, 10:29   #2 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
Re: zufallszahl zwischen -5 und 5, aber NIE 0

Zitat:
Geschrieben von Aule
kann man mit AS eigentlich auch "nur" aufrunden und niemals abrunden?
Math.ceil rundet glaub ich auf.
Math.floor rundet ab.
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 28-08-2003, 11:21   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: mars
Beiträge: 90
hi,
vielleicht hilft dir das weiter
ActionScript:
  1. (1+random(4))*(Math.random()>.5 ? 1 : -1);

hicckkkskwhisky
whiskeycola ist offline   Mit Zitat antworten
Alt 28-08-2003, 11:22   #4 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Oder so:

ActionScript:
  1. // Array mit den erlaubten Zahlen vorbereiten
  2. zahlen = new Array();
  3. for(var i=-5; i<=5; i++){
  4.      if( i != 0) zahlen.push(i);
  5. }
  6.  
  7. // zufallszahl holen
  8. zufallsZahl = zahlen[random(zahlen.length)]

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 28-08-2003, 11:31   #5 (permalink)
kenntEinenDerFlashKann
 
Benutzerbild von Aule
 
Registriert seit: Mar 2002
Ort: sauerland
Beiträge: 220
Wink

@whiskeycola:

kannst du das mal kommentieren:
Zitat:
>.5 ? 1 : -1
... dat sacht mir so nich viel...
__________________
...life is just a workaround...
Aule ist offline   Mit Zitat antworten
Alt 28-08-2003, 11:34   #6 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
frage :
würde
PHP-Code:

random
(5)+
ned reichen ?
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 28-08-2003, 11:49   #7 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
Zitat:
Geschrieben von Aule
kannst du das mal kommentieren:
ActionScript:
  1. (1+random(4))*(Math.random()>.5 ? 1 : -1);
ActionScript:
  1. var x = (1+random(4));
  2. if(Math.random()>.5) {
  3. x*=1;
  4. } else {
  5. x*=-1;
  6. }


klarer?

@bloba: nö, er will auch negative zahlen.


gruß, mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 28-08-2003, 11:56   #8 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Hier ist noch eine Version:

ActionScript:
  1. trace((random(5) + 1) * Math.cos(random(2) * Math.PI));

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 28-08-2003, 12:34   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: mars
Beiträge: 90
hi,
ich favorisiere bokel letze methode, sehr schöner random !

@mati: vielen dank fürs commenten
hickswhiskey
whiskeycola ist offline   Mit Zitat antworten
Alt 28-08-2003, 12:44   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Und noch eine

ActionScript:
  1. trace(random(2) ? random(5) + 1 : - random(5) - 1);

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 28-08-2003, 13:22   #11 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Ort: mars
Beiträge: 90
hi,
if its nice make it twice

hickss
whiskeycola ist offline   Mit Zitat antworten
Alt 28-08-2003, 13:34   #12 (permalink)
kenntEinenDerFlashKann
 
Benutzerbild von Aule
 
Registriert seit: Mar 2002
Ort: sauerland
Beiträge: 220
jo, hab alles kapiert, mit dem ?-Operator. Ich wußte gar nicht, dass man es sich so einfach machen kann. quasi 'ne versteckte "if"-Anweisung...

Jetzt hab ich aber folgendes Prob:
Ich hab die Datei mal angehängt, in der ich diese Random-Zahlen verwendet habe. Kann mir mal jemand sagen, warum die Kugel nach 'ner gewissen Zeit einfach "abhaut"? Jaja, ich weiß, solche Geschichten macht man besser mit 'ner Kollisions-Abfrage, aber trotzdem - was macht diese verdammte Kugel da?

Zur Übersicht: es gibt zwei scripte, eines in der Hauptzeitleiste im ersten Bild, das zweite direkt 'auf' dem Kugel-MC.
Angehängte Dateien
Dateityp: zip as-object-bewegung.zip (3,2 KB, 2x aufgerufen)
__________________
...life is just a workaround...
Aule 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