2010-02-01 21 views
46

để kiểm tra selen của tôi Tôi cần một nhà cung cấp giá trị để nhận được số có 5 chữ số trong mọi trường hợp. Vấn đề với javascript là api của Math.random chỉ hỗ trợ việc tạo phao khởi động 0.. Vì vậy, nó phải nằm giữa 1000099999.Biểu thức JavaScript để tạo số có 5 chữ số trong mọi trường hợp

Vì vậy, sẽ dễ dàng nếu nó chỉ tạo ra 0.10000 và cao hơn, nhưng nó cũng tạo ra 0.01000. Cách tiếp cận này không thành công:

Math.floor(Math.random()*100000+1) 

Có thể tạo số gồm 5 chữ số trong mọi trường hợp (trong biểu thức!)?

Trả lời

111

gì về:

Math.floor(Math.random()*90000) + 10000; 
+0

Thêm 10.000 ở cuối không có gì. –

+0

Kiểm tra lại, @BenBrown. Nếu không có 10000 bạn có thể có số có ít hơn 5 chữ số. –

+0

Ahhhh, kiểm tra tốt. My bad @Rubens Farias –

40

Vâng, bạn có thể tạo số ngẫu nhiên trong bất kỳ phạm vi nhất định:

var min = 10000; 
var max = 99999; 
var num = Math.floor(Math.random() * (max - min + 1)) + min; 

Hoặc đơn giản:

var num = Math.floor(Math.random() * 90000) + 10000; 
15

nếu bạn muốn tạo ra nói một mã zip và không nhớ các số 0 đứng đầu miễn là có 5 chữ số mà bạn có thể sử dụng:

(""+Math.random()).substring(2,7) 
+0

Tôi tò mò làm thế nào hiệu suất của điều này sẽ so sánh với các phương pháp khác. Điều này hấp dẫn tôi, nhưng có vẻ như việc chuyển đổi chuỗi và sau đó chuỗi con có thể tốn kém. – Danation

+0

Vâng, [ở đây] (http://jsperf.com/5-digit-generator). – rgin

+0

Mmm, 'Math.random()' không được bảo đảm trả về ít nhất N chữ số. Tôi chỉ thử nó với firefox, '(" "+ Math.random()). Chuỗi con (2,7)' có thể trả về XYZ hoặc XYWZ là 3/4 chữ số. –

0

Bạn có thể nhận được một số nguyên ngẫu nhiên bao gồm bất kỳ phút nhất định và số tối đa sử dụng các chức năng sau:

function getRandomIntInclusive(min, max) { 
    min = Math.ceil(min); 
    max = Math.floor(max); 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 

Để biết thêm ví dụ và các trường hợp sử dụng khác, kiểm tra các Math.random MDN documentation.

Các vấn đề liên quan