PDA

Volledige versie bekijken : Math.random() zonder dat ene getal


ninetynine
%Europe/Berlin %754 %2005, 19:06
Het is niet mogelijk zeker om een random getal te laten genereren zonder x?

Math.ceil(Math.random()*10)

bv zonder 4 ofzo?

Op welke manier moet ik dit oplossen ?

Dauntless
%Europe/Berlin %757 %2005, 19:11
var myRandom:Number = Math.ceil(Math.random()*10)
while(myRandom == 4){
myRandom = Math.ceil(Math.random()*10);
}

Zal zo moeten vrees ik... Als je het statisch wil kan je alle waarden in een array proppen dmv een for loop en de 4 overslagen. Dan gewoon een random getal uit de array nemen.

BlijBlauw
%Europe/Berlin %758 %2005, 19:11
do {
var getal = Math.ceil(Math.random()*10);
} while (getal == 4);
trace(getal);


EDIT: net te laat :)

Roenes
%Europe/Berlin %763 %2005, 19:19
do..while is in dit geval netter omdat je niet 2x dezelfde statement hebt staan in code :) Maar beide voorbeelden werken goed :)

ninetynine
%Europe/Berlin %764 %2005, 19:21
thnx , is wel jammer dat je het niet gewoon kunt in
flash 8


Math.ceil(Math.random()*10;x)

met x de waarde die hij niet mag gebruiken :)


is msschn een idee voor flash 9 ;)

BlijBlauw
%Europe/Berlin %765 %2005, 19:22
haha ja, introduceer het bij MacroMedia ;) er zijn zo veel dingen "die wel handig zouden zijn" ;)

Roenes
%Europe/Berlin %769 %2005, 19:27
Het zou handig zijn, maar je voorbeeldje slaat nergens op houston ;)

Je zet nu de x in de Math.ceil waardoor die nix met random te maken heeft ;) Het zou alleen nut hebben als we weer terug gaan naar het gebruik van random op deze manier: random(10);

Ze zouden een methode random kunnen maken met de volgende definitie:

random(int low, int high, int excluded)

of iets in die richting. Maar dat kun je zelf schrijven in een AS class waarbij je de Math class extend :)

BlijBlauw
%Europe/Berlin %774 %2005, 19:34
of iets in die richting. Maar dat kun je zelf schrijven in een AS class waarbij je de Math class extend

Of gewoon een functie maken

Laiverd
%Europe/Berlin %781 %2005, 19:45
Hiermee kan het ook:
function excludeRandom(num) {
t = Math.floor(Math.random() * 10);
if (t != num) {
return t;
} else {
excludeRandom(num);
}
}
Is voor verbetering vatbaar, maar goed. Bijgevoegd een voorbeeld-fla. Wie de 'undefined' kan oplossen; ik hou me aanbevolen ;)

O ja, dat tekstveldje waar '5' in staat, had natuurlijk een input veldje moeten zijn.

John

Dauntless
%Europe/Berlin %784 %2005, 19:49
U zei?

function excludeRandom(num) {

t = Math.floor(Math.random()*10);
if (t != num) {
return t;
} else {
return excludeRandom(num);
}
}
random_mc.onPress = function() {
e = Number(exclude_txt.text);
_root.onEnterFrame = function() {
output_txt.text += excludeRandom(e)+"-";
};
};
random_mc.onRelease = function() {
delete _root.onEnterFrame;
};

Ook wel logisch ;)

Laiverd
%Europe/Berlin %786 %2005, 19:52
?? Bedankt voor het copy pasten van het script ;) , maar had je er een bedoeling mee?

Dauntless
%Europe/Berlin %786 %2005, 19:52
Euhm, dat je geen undefined meer hebt met die van mij ? :D
("die van mij" = jouw versie waar ik een aanpassing aan heb gedaan)

Laiverd
%Europe/Berlin %791 %2005, 19:59
Ah, nu zie ik 'm ;) Thanks.
Bijgewerkte file hieronder:

John