Today I had this little problem. I needed to generate a random number from 1 to 30 and the result had to except a specific number (as in this example, any number from 1 to 30 except the number 7 )

The code is done now, it’s working as it should and I posted it in case someone else needs this same code.

var randomNumber:Number; var minNumber:Number = 1; var maxNumber:Number = 30; function generateRandomNumber():void{ randomNumber = Math.round(Math.random() * (maxNumber - minNumber)) + minNumber; if(randomNumber == 7){ generateRandomNumber(); } trace(randomNumber) } generateRandomNumber(); |

By the way, the code here is ActionScript 3 but if you remove “:void” you can use it in ActionScript 2 too 😉

//AS 3 version- just a little cleaner piece of code.

var randomNumber:Number = generateRandomNumber(1, 30);

function generateRandomNumber(p_max:Number, p_min:Number):Number {

var randomNumber = (Math.random() * (p_max – p_min)) + p_min | 0;

if(randomNumber == 7){ return generateRandomNumber(p_max, p_min); }

return randomNumber;

}

trace(randomNumber);

JohnnyG’s Code dind’t work in my computer, so I think the code should be:

//AS 3 version- just a little cleaner piece of code.

var randomNumber:Number = generateRandomNumber(1, 30);

function generateRandomNumber(p_max:Number, p_min:Number):Number {

var randomNumber = Math.round(Math.random() * (p_max – p_min)) + p_min;

if(randomNumber == 7){

return generateRandomNumber(p_max, p_min);

}

return randomNumber;

}

trace(randomNumber);

Thanks JohnnyG!

What didn’t work about it?

Do you know what | 0 does? – (if floors your value)

what value did you get back? what values did you feed it.

You would have supply more information then … it didn’t work on my computer.

7 is not a random number.

You are a genius!