TypeScript:
Генерация случайных чисел
Как:
В TypeScript вы можете генерировать случайные числа, используя глобальный объект Math
. Ниже приведены некоторые практические примеры, демонстрирующие, как производить случайные числа для различных потребностей.
Генерация Простого Случайного Числа
Чтобы сгенерировать простое случайное десятичное число между 0 (включительно) и 1 (исключительно), используйте Math.random()
. Это не требует дополнительных манипуляций:
const randomNumber = Math.random();
console.log(randomNumber);
Это может вывести значение, например, 0.8995452185604771
.
Генерация Случайного Целого Числа Между Двумя Значениями
Когда вам нужно целое число между двумя конкретными значениями, вы включаете как Math.random()
, так и некоторые арифметические операции:
function getRandomInt(min: number, max: number): number {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
const randomInt = getRandomInt(1, 10);
console.log(randomInt);
Это может вывести целочисленное значение между 1 и 10, например, 7
.
Генерация Уникального Идентификатора
Случайные числа можно сочетать с другими методами для создания уникальных идентификаторов, например, простой отрывок генератора UUID:
function generateUUID(): string {
return 'xxxxyxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
const uuid = generateUUID();
console.log(uuid);
Это генерирует строку, похожую на UUID, например, 110e8400-e29b-41d4-a716-446655440000
.
Погружение
Основной метод генерации случайных чисел в JavaScript и, таким образом, в TypeScript, Math.random()
, использует генератор псевдослучайных чисел (PRNG). Важно отметить, что, хотя результаты могут показаться случайными, они генерируются детерминированным алгоритмом на основе начального значения seed. Поэтому числа, производимые Math.random()
, не являются действительно случайными и не должны использоваться в криптографических целях.
Для криптографически безопасных случайных чисел Web Crypto API предлагает crypto.getRandomValues()
, который доступен в средах, поддерживающих стандарт Web Crypto, включая современные браузеры и Node.js (через модуль crypto
). Вот быстрый пример, иллюстрирующий его использование в TypeScript для генерации безопасного случайного числа в пределах диапазона:
function secureRandom(min: number, max: number): number {
const array = new Uint32Array(1);
window.crypto.getRandomValues(array);
return min + (array[0] % (max - min + 1));
}
const secureRandNum = secureRandom(1, 100);
console.log(secureRandNum);
Этот метод обеспечивает более сильный уровень случайности и больше подходит для приложений, чувствительных к безопасности. Однако он также более ресурсоемкий и может быть не нужен для более простых задач, таких как простые симуляции или генерация не критичных случайных значений.