Rowel Abenio
Rowel Abenio

Reputation: 53

Generate random numbers javascript

Ok so guys I'm having trouble with random numbers inside a function in javascript. I want to produce an array that contains between 3 to 7 indexes or whatever you call that. I mean like this arr[value,value,value] -> arr[value,value,value...]. I already done that. my main problem is that when I try to put each value of this array to another array, I sometimes get a empty value at the end. I mean when I print the array I sometimes get this 20,11,17, . I tried to use pop method but when I used that I only got 2 numbers, which is 1 less than the minimum number that I need. Please help, I have my code below

function randGen(num){
            var a = Math.floor((Math.random() * 5) + 3);
            var c = num.length;
            var d;
            var arr = [];
            var mainArr = [];
            for(var b = 0; b < a; b++){
                d = Math.floor(Math.random() * (c+1));
                for(var t = 0; t < arr.length; t++){
                    while(d == arr[t]){
                        d = Math.floor(Math.random() * (c+1));
                    }
                }
                arr.push(d);
            }
            for(var qw = 0; qw < arr.length; qw++){
               mainArr[qw] = num[arr[qw]]; 
            }
            mainArr.sort();

            document.write(mainArr);
        }

 $(function (){       

            var num = [];
            for(var a = 5; a <= 100; a+=5){
                num.push(a);
            }

            randGen(num);

        });

Sometimes results to this: 5,10,25,70, Pop method did not do the work as I said earlier, so any help would be much appreciated.

P.S num.length = 20;

Upvotes: 0

Views: 89

Answers (1)

Rayon
Rayon

Reputation: 36609

After spending an hour or so I got this right. Try this:

function randGen(num) {
    var a = Math.floor((Math.random() * 5) + 3);
    var c = num.length;
    var d;
    var arr = [];
    var mainArr = [];
    for (var b = 0; b < a; b++) {
        d = Math.floor(Math.random() * (c));
        for (var t = 0; t < arr.length; t++) {
            while (d == arr[t]) {
                d = Math.floor(Math.random() * (c));
            }
        }
        arr.push(d);
    }
    for (var qw = 0; qw < arr.length; qw++) {
        mainArr[qw] = num[arr[qw]];
    }
    mainArr.sort();
    console.log(mainArr);
}
$(function () {
    var num = [];
    for (var a = 5; a <= 100; a += 5) {
        num.push(a);
    }
    randGen(num);
});

num.length in the length of your input array and while fetching random index from that array you need to use array.lenght-1 as index starts from 0. I have made the required modifications in your code.

Upvotes: 1

Related Questions