Обновлено:

Заполнить случайными числами

Нужно быстро создать набор данных для тестов, учебной задачи или прототипа игры? Заполнить структуру случайными числами можно онлайн или несколькими строками кода. Главное – правильно задать диапазон, количество элементов и тип значений: целые или дробные.

Параметры
От 1 до 10 000
Настройки
Работает медленнее на больших диапазонах. Для дробных чисел вероятность совпадений крайне низка.

Как сгенерировать случайное число в заданном диапазоне?

Большинство языков дают функцию, которая возвращает число от 0 (включительно) до 1 (не включительно). Чтобы получить значение между min и max, применяют формулу:

Для целых чисел:

result = Math.floor(random() * (max - min + 1)) + min

Для дробных:

result = random() * (max - min) + min

Разница в +1 и округлении. Если пропустить единицу, верхняя граница диапазона выпадет реже остальных.

Заполнение массива в JavaScript

В браузерном JavaScript базовый инструмент – Math.random(). Чтобы заполнить массив из 10 элементов числами от 0 до 40, можно создать пустой массив нужной длины и преобразовать каждый элемент через map() ru.hexlet.io:

const generateArray = (length, max) =>
  [...new Array(length)].map(() => Math.round(Math.random() * max));
const numbers = generateArray(10, 40);
console.log(numbers); // [36, 5, 9, 35, 23, 38, 27, 35, 34, 6]

Если нужен диапазон с отрицательными значениями, удобнее использовать библиотеку Lodash и её метод _.random(min, max):

const length = 10;
const min = -50;
const max = 50;
const numbers = [...Array(length)];
for (let i = 0; i < numbers.length; i += 1) {
  numbers[i] = _.random(min, max);
}
// [3, -40, 16, -31, -21, 42, 3, 14, -6, 42]

Важно: Math.round() в сочетании с Math.random() даёт неравномерное распределение на краях диапазона. Для равномерного лучше использовать Math.floor().

Как создать список случайных чисел в Python

В Python генерация короче за счёт list comprehension. Модуль random покрывает большинство задач:

import random

length = 10
min_val = 1
max_val = 100

numbers = [random.randint(min_val, max_val) for _ in range(length)]

floats = [random.uniform(min_val, max_val) for _ in range(length)]

Если нужна выборка без повторов, random.sample() формирует уникальный набор за один вызов:

unique = random.sample(range(1, 101), 10)

Запись случайных чисел в файл на C++

В языке C++ заполнение файла случайными числами обычно совмещают с потоковым выводом. Классическая схема: ввести количество чисел, открыть ofstream и записать значения через цикл pro-prof.com:

#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

int rand_between(int from, int to) {
  return rand() % (to - from + 1) + from;
}

int main() {
  int n;
  cin >> n;
  ofstream ofst("file.txt");
  ofst << n << endl;
  for (int i = 0; i < n; ++i) {
    ofst << rand_between(1, 100) << " ";
  }
}

Чтобы получить дробные числа, результат rand_between делят на константу, например 10.0.

Для новых проектов рекомендуется заменить rand() на генератор из <random>:

#include <random>
std::mt19937 gen(std::random_device{}());
std::uniform_int_distribution<> dist(1, 100);
int value = dist(gen);

Как получить дробные значения

Перевод целого генератора в дробный выполняется делением на масштабный коэффициент или сменой функции:

  • JavaScript: Math.random() * (max - min) + min
  • Python: random.uniform(min, max)
  • C++: std::uniform_real_distribution<double> dist(min, max);

При записи в файл важно явно указать тип double или float, иначе поток может вывести число как целое.

Где применяют случайные наборы чисел

  • Тестирование ПО. Проверка сортировок, поиска и граничных случаев на непредсказуемых входных данных.
  • Игровая логика. Генерация карт, лута, поведения противников.
  • Наука и моделирование. Метод Монте-Карло, статистические эксперименты, случайные выборки.
  • Анонимизация. Замена реальных идентификаторов псевдослучайными номерами в тестовых базах.

Часто задаваемые вопросы

Можно ли заполнить двумерный массив случайными числами?

Да. Используйте вложенные циклы или вложенные генераторы. В JavaScript подойдёт Array.from({length: n}, () => Array(m).fill().map(...)), в Python – [[random.randint(...) for _ in range(m)] for _ in range(n)].

Почему нельзя использовать Math.random() для паролей и токенов?

Math.random() создаёт псевдослучайные числа на основе внутреннего алгоритма браузера. Для криптографии используйте crypto.getRandomValues() в JavaScript или модуль secrets в Python.

Как избежать повторов при заполнении массива?

Сгенерируйте набор уникальных чисел, а затем перемешайте его. В Python для этого есть random.sample(range(min, max), count), в JavaScript – алгоритм Фишера-Йетса или фильтрация через Set.

Как записать случайные числа в файл без программирования?

Сгенерируйте набор в онлайн-калькуляторе выше, скопируйте результат и вставьте в текстовый файл. Также подойдут Excel и Google Таблицы: функции СЛУЧМЕЖДУ() и RANDBETWEEN().

Чем `rand()` в C++ отличается от генераторов в `<random>`?

rand() – устаревшая функция с низким качеством случайности и коротким периодом. Заголовок <random> предоставляет std::mt19937 и математически точные распределения, необходимые для научных расчётов.

  1. Что такое рандомное число: генераторы, алгоритмы и применение
  2. Генератор чисел от 1 до N онлайн
  3. Рандомайзер чисел без повторения цифр онлайн
  4. Рандомайзер чисел – колесо фортуны онлайн
  5. Рандомайзер от 1 до 50 – сгенерировать число онлайн
  6. Генератор рандомных чисел онлайн