Toán học ngẫu nhiên () trong JavaScript là gì?

Javascript là ngôn ngữ lập trình đầy đủ tính năng, có thể thực hiện các phép tính toán học phức tạp một cách nhanh chóng và chính xác. Tiêu chuẩn Javascript giúp thực hiện các tính toán này dễ dàng hơn với đối tượng

let value2 = Math.random[] * 2.5;
2

Một trong những cách phổ biến nhất mà các lập trình viên sử dụng đối tượng

let value2 = Math.random[] * 2.5;
2 là tạo các số ngẫu nhiên. Tính ngẫu nhiên được sử dụng theo chương trình trong nghệ thuật, khoa học và trò chơi. Cho dù bạn đang mô phỏng nét bút lông chồn, chạy thử nghiệm y tế có kiểm soát, xây dựng sòng bạc trực tuyến hay mã hóa bất kỳ thứ gì, bạn đều cần các số ngẫu nhiên

Tạo các số ngẫu nhiên Javascript khác với việc chỉ gán một số cho một biến trong chương trình — một số hành động thú vị diễn ra ở hậu trường

Tính ngẫu nhiên trong Javascript là gì?

Máy tính không thể tạo ra các số hoàn toàn ngẫu nhiên. Điều này là do mọi tính toán bên trong máy tính đều có cơ sở logic về nguyên nhân và kết quả, trong khi các sự kiện ngẫu nhiên không tuân theo logic đó

Máy tính không có khả năng tạo ra thứ gì đó thực sự ngẫu nhiên. Tính ngẫu nhiên thực sự chỉ có thể thông qua nguồn dữ liệu bên ngoài mà máy tính không thể tạo ra, chẳng hạn như chuyển động của nhiều đèn dung nham cùng một lúc [đã được sử dụng làm mã hóa ngẫu nhiên không thể phá vỡ trong thế giới thực], nhiễu khí tượng hoặc phân rã hạt nhân

Giải pháp mà Javascript và các ngôn ngữ lập trình khác sử dụng để triển khai tính ngẫu nhiên là tạo số “giả ngẫu nhiên”. Các số ngẫu nhiên Javascript bắt đầu từ một giá trị ẩn bên trong được gọi là “hạt giống. ” Hạt giống là điểm khởi đầu cho một dãy số ẩn được phân bố đều trong phạm vi có thể của chúng

Các nhà phát triển không thể thay đổi hạt giống giả ngẫu nhiên của Javascript hoặc phân phối các giá trị trong các chuỗi giả ngẫu nhiên được tạo của nó. Các triển khai Javascript khác nhau và các trình duyệt khác nhau thường bắt đầu với các hạt giống khác nhau. Đừng cho rằng các trình duyệt khác nhau hoặc thậm chí các máy tính khác nhau sẽ luôn sử dụng cùng một nguồn gốc

Các số ngẫu nhiên Javascript không an toàn để sử dụng trong mật mã vì việc giải mã hạt giống có thể dẫn đến việc giải mã chuỗi số ẩn. Một số chức năng tồn tại để tạo các số giả ngẫu nhiên được bảo mật bằng mật mã trong Javascript, nhưng chúng không được hỗ trợ bởi các trình duyệt cũ hơn

Trong bài đăng trên blog này, trước tiên chúng tôi sẽ đề cập đến các phương pháp chuẩn để tạo số ngẫu nhiên Javascript. Sau đó, chúng tôi sẽ chuyển sang các cách để có được dữ liệu ngẫu nhiên chất lượng cao hơn;

Tạo số ngẫu nhiên Javascript

Javascript tạo các số giả ngẫu nhiên bằng hàm

let value2 = Math.random[] * 2.5;
4. Hàm này không có tham số và tạo một số thập phân ngẫu nhiên trong khoảng từ 0 đến 1. Giá trị trả về có thể là 0, nhưng sẽ không bao giờ là 1

let value1 = Math.random[];

Bạn có thể sử dụng

let value2 = Math.random[] * 2.5;
4 để tạo số nguyên [số nguyên] hoặc số có phần thập phân [số dấu phẩy động]. Vì
let value2 = Math.random[] * 2.5;
4 tạo số dấu phẩy động theo mặc định, nên bạn có thể tạo số dấu phẩy động ngẫu nhiên chỉ bằng cách nhân giá trị tối đa có thể chấp nhận của bạn với kết quả từ
let value2 = Math.random[] * 2.5;
4. Do đó, để tạo một số giả ngẫu nhiên trong khoảng từ 0 đến 2. 5

let value2 = Math.random[] * 2.5;

Tạo một số nguyên giả ngẫu nhiên khó hơn một chút; . Vì vậy, để tạo một số ngẫu nhiên trong khoảng từ 0 đến 10

let value3 = Math.floor[Math.random[] * 10];

Tạo số ngẫu nhiên Javascript dễ dàng hơn

let value2 = Math.random[] * 2.5;
4 là một chức năng hữu ích, nhưng bản thân nó không giúp lập trình viên dễ dàng tạo ra các số giả ngẫu nhiên cho các điều kiện cụ thể. Ví dụ: có thể cần tạo các số ngẫu nhiên trong một phạm vi cụ thể không bắt đầu bằng 0

May mắn thay, có những hàm Javascript đơn giản mà các lập trình viên có thể tạo để làm cho các số giả ngẫu nhiên dễ quản lý hơn. Phần còn lại của phần này sẽ chỉ cho bạn cách tạo các hàm đó, sau đó kết hợp tất cả chúng lại với nhau thành một trình tạo số giả ngẫu nhiên duy nhất

Số nguyên giả ngẫu nhiên trên một dãy

Trong các ví dụ trước,

let value2 = Math.random[] * 2.5;
4 không bao giờ có thể tạo một số ở trên cùng của một phạm vi được chỉ định. Ví dụ: nếu bạn muốn một số từ 0 đến 5, bạn có thể nhận 0-4, nhưng không bao giờ là 5. Giải pháp cho vấn đề này, nếu bạn đang tạo một số nguyên, hãy thêm 1 vào kết quả

// Generate a number between 0 and 10, including 10
function generateRandomInteger[max] {
    return Math.floor[Math.random[] * max] + 1;
}

let value4 = generateRandomInteger[10];

Vì các số dấu phẩy động trong Javascript có nhiều chữ số thập phân, nên không có giải pháp một số đơn giản nào để bao gồm số dấu phẩy động tối đa có thể có trong phạm vi của bạn trừ khi bạn muốn đưa ra các giả định không chắc chắn và nhập nhiều số 0. Thay vào đó, bạn có thể sử dụng một số phép toán đơn giản cũng hoạt động với số nguyên để nhận các số giả ngẫu nhiên trong phạm vi của mình

// Generate a random number between 2 and 10, including both 2 and 10
function generateRandomIntegerInRange[min, max] {
    return Math.floor[Math.random[] * [max - min + 1]] + min;
}

let value5 = generateRandomIntegerInRange[2, 10];

Số dấu phẩy động giả ngẫu nhiên trên một dãy

Một hàm thực hiện điều này cho các số dấu phẩy động sẽ trông gần như giống hệt nhau, ngoại trừ việc nó sẽ không sử dụng

let value2 = Math.random[] * 2.5;
8

// Generate a random number between 2.5 and 10.75, including both 2.5 and 10.75
function generateRandomFloatInRange[min, max] {
    return [Math.random[] * [max - min + 1]] + min;
}

let value6 = generateRandomFloatInRange[2.5, 10.75];

Các số dấu phẩy động vẫn còn một chút rắc rối ở đây vì theo mặc định,

let value2 = Math.random[] * 2.5;
4 tạo ra số lượng vị trí thập phân tối đa mà việc triển khai Javascript cho phép. Trong hầu hết các trường hợp, bạn có thể muốn giới hạn các vị trí thập phân của mình ở 3 hoặc 4 thay vì đọc 10 hoặc nhiều hơn mà
let value2 = Math.random[] * 2.5;
4 thường tạo ra

Số dấu phẩy động giả ngẫu nhiên với vị trí thập phân cụ thể

Hàm

let value3 = Math.floor[Math.random[] * 10];
4 định dạng một số với số vị trí thập phân mà bạn chỉ định. Để đảm bảo rằng bạn không vô tình tạo một chuỗi trong một số triển khai Javascript, tốt nhất là luôn xâu chuỗi
let value3 = Math.floor[Math.random[] * 10];
4 với hàm
let value3 = Math.floor[Math.random[] * 10];
6

// Generate a random number between 2.5 and 10.75, including both 2.5 and 10.75, and specifying 2 decimal places
function generateRandomDecimalInRangeFormatted[min, max, places] {
    let value = [Math.random[] * [max - min + 1]] + min;
    return Number.parseFloat[value].toFixed[places];
}

let value7 = generateRandomDecimalInRangeFormatted[2.5, 10.75, 2];

Để tất cả chúng cùng nhau

Đặt tất cả những thứ này lại với nhau, một trình tạo số giả ngẫu nhiên Javascript có thể tạo số nguyên hoặc số dấu phẩy động với bất kỳ số vị trí thập phân nào có thể trông như thế này. [Lưu ý rằng việc triển khai này cũng bao gồm kiểm tra lỗi cho các tham số. ]

function generateRandomNumbers[min, max, places] {
    // If both the minimum and maximum values are integers, return a random integer. Don't let the user specify any decimal places.
    if [Number.isInteger[min] && Number.isInteger[max]] {
        if [places !== undefined] {
            new Error["Cannot specify decimal places with integers."];
        }
        return Math.floor[Math.random[] * [max - min + 1]] + min;
    }

    // Otherwise, return a random floating point number with specified decimal places.
    else {

        // Make sure the minimum value is a number.
        if [Number.isNaN[Number.parseFloat[min]]] {
            new Error["Minimum value is not a number."];
        }

        // Make sure the maximum value is a number.
        if [Number.isNaN[Number.parseFloat[max]]] {
            new Error["Maximum value is not a number."];
        }

        // Make sure the decimal places value is a non-negative number greater than 0.
        if [Number.isInteger[places] === false] {
            new Error["Number of decimal places is not a number."];
        }

        if [places 

Chủ Đề