Bắt đầu với bảng giá trị
x | y
=======
0 | 15
1 | 45
2 | 75
3 | 105
4 | 135
5 | 165
6 | 195
7 | 225
Thiết lập phương trình
y = ax + b
Cắm một số giá trị ban đầu
15 = a(0) + b
Giải quyết cho bất kỳ biến bạn có thể
15 = b
Cắm giá trị ban đầu khác nhau
225 = a(7) + 15
Giải quyết cho bất kỳ biến còn lại
210 = a(7)
30 = a
Nhắc lại phương trình
y = 30x + 15
Randomize x
giữa các giới hạn
x = Math.floor(Math.random() * 8) //0-7
Sử dụng chức năng
function customRandomNumber() {
var x;
x = Math.floor(Math.random() * 8);
return 30 * x + 15;
}
Bắt một số ngẫu nhiên trong một khoảng thời gian với một bước có thể được khái quát hóa trong hàm sau:
function rand(min, max, step) {
var delta,
range,
rand;
if (arguments.length < 2) {
max = min;
min = 0;
}
if (!step) {
step = 1;
}
delta = max - min;
range = delta/step;
rand = Math.random();
rand *= range;
rand = Math.floor(rand);
rand *= step;
rand += min;
return rand;
}
Điều gì sẽ đặt dấu chấm câu của bạn ion như
rand(15, 225, 30);
Tôi cũng nên lưu ý, bởi vì tôi đã quên về các vấn đề giới hạn khả năng, hình thức tổng quát sẽ không bao gồm các giới hạn trên của 225. Điều này là do Math.random()
trả về một số lượng lớn lớn hơn hoặc bằng 0 và nhỏ hơn một (0 <= Math.random < 1
).Nếu bạn muốn để bao gồm các giới hạn trên, bạn chỉ cần đưa thêm một bước nữa trong khoảng thời gian:
rand(15, 255, 30) //will return 15...225
'Math.floor (Math.random() * 11)' sẽ trả về một số '[0-10]', trong khi 'Math.floor (Math.random() * 10) + 1' sẽ trả về một số '[1-10]'. – zzzzBov