I need a some help with some code I've assembled from different websites.
I want to create an array of 3 random numbers between lets say 1 & 10 but with the exception or the exclusion of lets say 6.
My limited knowledge of functions, their parameters and loops prevent me for coming up with a solution, any advice would be greatly appreciated. Here's what I've got so far:
Code:
var myNumArray = create_unique_random_array(3,10,5);
function create_unique_random_array(num_elements,max,current_pic) {
var temp, nums = new Array;
for (var element=0; element<num_elements; element++) {
//IMPORTANT: DON'T FORGET THE SEMI-COLON AT THE END
while((temp=number_found(randomizeMe(this,{maxNumber:max, exempt:current_pic),nums))==-1);
nums[element] = temp;
}
return (nums);
}
function number_found (random,number_array) {
for (var element=0; element<number_array.length; element++) {
if (random==number_array[element] ) {
return (-1);
}
}
return (random);
}
function randomizeMe(me, options){
var options = options || {}; // setup the options
var imExempt = options.exempt || null; // capture the exempt numbers
var maxNum = options.maxNumber || 0; // capture the maximum number to randomize
var rand_no = Math.floor(Math.random()*maxNum); // run the random numbers
if(imExempt != null){ // check to see if there are any exempt numbers
imExempt = imExempt.toString(); // turn the exemptions into a string
for(i=0; i <= maxNum; i++){ // loop throught the set number
if(imExempt.search(rand_no) != -1){ // check for exemptnumbers
return randomizeMe(me, {exempt: imExempt, maxNumber:maxNum}); // start over
}
}
}
return rand_no;// return the new random number
}
document.write(myNumArray);
Last edited by Kor; 10-28-2009 at 08:37 AM.
Reason: wrap the code [code][/code]
Thanks for help Red Devil, but I also wanted every number in the array to be unique; I didn't want any duplications in it. Luckily I loaded the code I posted in Dreamweaver and I threw back an error on Line 12, I didn't close the randomizeMe parameter properly. I fixed it and the code works fine now :-)
I'll save your recommendation for future use, Thanks.
Here's the code for anyone who wants it:
Code:
<script type="text/javascript">
var myNumArray = create_unique_random_array(3,20,[6,10]);
function create_unique_random_array(num_elements,maxNum,current_pic) {
var temp, nums = new Array;
for (var element=0; element<num_elements; element++) {
//IMPORTANT: DON'T FORGET THE SEMI-COLON AT THE END
while((temp=number_found(randomizeMe(this,{maxNumber:maxNum, exempt:current_pic}),nums))==-1);
nums[element] = temp;
}
return (nums);
}
function number_found (rand,number_array) {
for (var element=0; element<number_array.length; element++) {
if (rand==number_array[element] ) {
return (-1);
}
}
return (rand);
}
function randomizeMe(me, options){
var options = options || {}; // setup the options
var imExempt = options.exempt || null; // capture the exempt numbers
var maxNum = options.maxNumber || 0; // capture the maximum number to randomize
var rand_no = Math.ceil(Math.random()*maxNum); // run the random numbers
if(imExempt != null){ // check to see if there are any exempt numbers
imExempt = imExempt.toString(); // turn the exemptions into a string
for(i=0; i <= maxNum; i++){ // loop throught the set number
if(imExempt.search(rand_no) != -1){ // check for exempt numbers
return randomizeMe(me, {exempt: imExempt, maxNumber: maxNum}); // start over
}
}
}
return rand_no;// return the new random number
}
document.write(myNumArray);
</script>
Thanks Kor
I fairly understand ur formula and it works fine plus its definitely superior to mine because of its simplicity, one thing I find a bit perplexing is :
nr==exception||q?i--:array[array.length]=nr;
Could you explain this bit of the code, is it regex or an if statment or both? This bit of the code baffles me!
...and if you have the time you could show me how to add more than one exception to your formula.
Bookmarks