Javascript Random Integer Between two Numbers

javascript, random

Solution

Your problem is you never converted your string to numbers try adding this

if (  numCount.match(/^[\d]*$/ ) && 
    randNumMin.match(/^[\d]*$/ ) && 
    randNumMax.match(/^[\d]*$/ )){
  if (numCount === "" || randNumMin === "" || randNumMax === "")  {
    alert ("Please fill out all forms then try again.");
  } else {
    numCount=numCount-0;randNumMin=randNumMin-0;randNumMax=randNumMax-0;

Another note you need to change your checking if the value is an empty string to strict equality. To see what I mean try using zero for one of the values. `0 == ""//returns true` because both are falsy `0 === ""//returns false`.

Problem

I'm trying to create a random number generator that generates random numbers between two numbers. For instance, let's say I want to generate a random number between 4 and 10, I would want it to be able to choose from any number from 4 - 10. Here is what I tried: ``` var randNumMin = 4; var randNumMax = 10; var randInt = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin); ``` However, that didn't seem to work and generated weird random numbers that weren't between 4 and 10, and some began with 0. What would be the correct algorithm to do this? Here is the code I'm implementing the algorithm in: ``` $(function() { $('#generateRandNums').click(function() { var numCount = document.getElementById("randNumCount").value; var randNumMin = document.getElementById("randNumMin").value; var randNumMax = document.getElementById("randNumMax").value; if (numCount.match(/^[\d]*$/ ) && randNumMin.match(/^[\d]*$/ ) && randNumMax.match(/^[\d]*$/ )) { if (numCount == "" || randNumMin == "" || randNumMax == "") { alert ("Please fill out all forms then try again."); } else { if (randNumMin>randNumMax) { alert ("Please make sure your first number is smaller than the second, then try again."); } else { if (randNumMin<0) { alert ("Please make sure that you generate a positive number of random numbers, then try again."); } else { if (numCount>1) { var randResult = ("You generated " + numCount + " random numbers between " + randNumMin + " and " + randNumMax + " and got the numbers ") oneNumber = 0; } else { var randResult = ("You generated a random number between " + randNumMin + " and " + randNumMax + " and got the number "); oneNumber = 1; } for (i=0;i<numCount;i++) { //Get a random number between randNumMin and randNumMax var randInt = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin); if (i == numCount-1) { if (oneNumber == 0) { randResult = (randResult + "and " + randInt + "."); } else { randResult = (randResult + randInt + "."); } } else { randResult = (randResult + randInt + ", "); } } $("#randNumResults").val(randResult); } } } } else { alert ("Make sure you only enter numbers and no spaces, then try again."); } }); }); ``` I also tried replacing the randInt line with this: ``` var randInt = Math.floor((Math.random() * ((randNumMax + 1) - randNumMin)) + randNumMin); ``` It still didn't work. I'm not sure if the algorithm is wrong or I'm incorporating it wrong into the function. An answer is appreciated, thanks.

Original source

Related problems