使用子字符串生成4位数的随机数

时间:2015-04-15 02:08:49

标签: javascript jquery

我正在尝试执行以下代码:

var a = Math.floor(100000 + Math.random() * 900000);
a = a.substring(-2);

我在第2行收到undefined is not a function之类的错误,但是当我尝试alert(a)时,它有一些东西。这有什么不对?

9 个答案:

答案 0 :(得分:62)

那是因为a是一个数字,而不是一个字符串。您可能想要做的是这样的事情:



var val = Math.floor(1000 + Math.random() * 9000);
console.log(val);




  • Math.random()将生成[0,1]范围内的浮点数(请注意,1从范围中排除)。
  • 乘以9000得到的范围为[0,9000]。
  • 添加1000个结果,范围为[1000,10000)。
  • 地板会删除小数值以提供整数。请注意,它不会圆。

一般情况

如果要生成[x,y]范围内的整数,可以使用以下代码:

Math.floor(x + (y - x) * Math.random());

答案 1 :(得分:4)

这将使用子字符串生成4位随机数(0000-9999):

var seq = (Math.floor(Math.random() * 10000) + 10000).toString().substring(1);
console.log(seq);

答案 2 :(得分:1)



$( document ).ready(function() {
  
    var a = Math.floor(100000 + Math.random() * 900000);   
    a = String(a);
    a = a.substring(0,4);
    alert( "valor:" +a );
  
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您的a是一个数字。为了能够使用substring函数,首先必须是string,尝试

var a = (Math.floor(100000 + Math.random() * 900000)).toString();
a = a.substring(-2);

答案 4 :(得分:0)

您可以通过.substring(startIndex, length)这样的方式获得4位数,这将是您.substring(0, 4)的情况。为了能够使用.substring(),您需要使用a.toString()转换为字符串。最后,您可以使用parseInt

将结果输出转换为整数
 var a = Math.floor(100000 + Math.random() * 900000)
 a = a.toString().substring(0, 4);

 a =  parseInt(a);

 alert(a);

https://jsfiddle.net/v7dswkjf/

答案 5 :(得分:0)

问题是a是一个数字。您不能将substring应用于某个数字,因此您必须将该数字转换为字符串,然后应用该函数。

DEMO:https://jsfiddle.net/L0dba54m/

var a = Math.floor(100000 + Math.random() * 900000);
a = a.toString();
a = a.substring(-2);

答案 6 :(得分:0)

 
$(document).ready(function() {
  var a = Math.floor((Math.random() * 9999) + 999);
  a = String(a);
  a = a.substring(0, 4);
});

答案 7 :(得分:0)

// It Will Generate Random 5 digit Number & Char 
const char = '1234567890abcdefghijklmnopqrstuvwxyz'; //Random Generate Every Time From This Given Char
const length = 5;
let randomvalue = '';
for ( let i = 0; i < length; i++) {

    const value = Math.floor(Math.random() * char.length);

    randomvalue += char.substring(value, value + 1).toUpperCase();

}

console.log(randomvalue);

答案 8 :(得分:0)

我改编了Balajis,使其不可变且实用。

因为它不使用数学运算,所以可以使用字母数字,表情符号,长针等。

const getRandomPin = (chars, len)=>[...Array(len)].map(
   (i)=>chars[Math.floor(Math.random()*chars.length)]
).join('');


//use it like this
getRandomPin('0123456789',4);