KutoolsforOffice — Одно решение — пять мощных инструментов.Меньше усилий — больше результата.

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

АвторСунДата изменения

При работе в Excel иногда требуется генерировать случайные значения, отражающие определённые базовые вероятности. Например, предположим, что у вас есть таблица с перечнем возможных исходов и соответствующими им вероятностями, подобная приведённой ниже на снимке экрана.
образец данных

Такой сценарий часто используется в бизнес-моделировании, проектировании и обучении, когда важно, чтобы случайный выбор точно отражал вероятность или частоту, заданную вашими данными.

Типичные задачи и случаи использования:

  • Моделирование ответов на опросы или выбора клиентов, при котором некоторые варианты ответов имеют более высокую вероятность.
  • Создание тестовых наборов данных или случайных выборок для освоения основ теории вероятностей.
  • Автоматизация процессов выбора, где вероятность каждого варианта известна.
  • Разработка игр и анализ рисков, где исходы должны соответствовать заданным вероятностным распределениям.

Ниже представлены несколько способов генерации случайных значений с учётом заданных вероятностей в Excel — от стандартных формул и встроенной надстройки «Анализ данных» до расширенной автоматизации с помощью VBA.


Генерация случайного значения с учётом вероятности

Excel предлагает удобное решение на основе формул для генерации случайных значений с учётом заданных вероятностей. Этот метод идеально подходит для быстрых задач, полностью работает прямо на листе и не требует дополнительной настройки.

Перед началом работы убедитесь, что ваши значения перечислены в одном столбце (A2:A8), а соответствующие им вероятности (выраженные десятичными дробями от 0 до 1) — в следующем столбце (B2:B8). Сумма вероятностей должна быть равна 1 для обеспечения точности. Это решение идеально подходит для таблиц с разумным количеством значений.

1.In an adjacent column (beginning at C2), введите следующую формулу для вычисления накопленных (кумулятивных) вероятностей:

=SUM($B$2:B2)

Затем протяните эту формулу вниз, чтобы охватить все ваши значения. Так вы создадите кумулятивные диапазоны для каждого значения, которые позволят сопоставить случайное число с конкретным исходом.
используйте формулу для расчета кумулятивных процентов

2.В любой пустой ячейке (например, D2) введите приведённую ниже формулу, чтобы получить случайное значение на основе вашего вероятностного распределения:

=INDEX(A$2:A$8,COUNTIF(C$2:C$8,"<="&,RAND())+1)

Нажмите Enter, чтобы отобразить случайное значение. Каждый раз при нажатии F9 (для пересчёта) или при изменении данных на листе будет появляться новый результат.
примените формулу для генерации случайно выбранного значения на основе кумулятивных процентов

Советы и меры предосторожности:

  • Вероятности в столбце B должны в сумме составлять ровно 1 (или 100 %, если используются проценты; однако для формул их необходимо преобразовать в десятичные дроби), чтобы обеспечить корректное распределение.
  • Этот метод идеально подходит для коротких списков. Однако при наличии десятков или сотен значений производительность может снизиться, а обслуживание — стать затруднительным.
  • Если нужно повторить случайный выбор несколько раз (например, чтобы сформировать набор смоделированных результатов), просто скопируйте итоговую формулу в диапазон ниже или рядом.
  • Будьте внимательны при работе с пустыми строками и несоответствующими диапазонами — это может привести к ошибкам или неожиданным результатам.

Напоминание об ошибках: Если появляется ошибка #ССЫЛ! или #ЗНАЧ!, убедитесь, что длина столбца кумулятивных вероятностей совпадает с количеством значений и что все вероятности являются корректными числами.

снимок экрана kutools for excel ai

Раскройте магию Excel с помощью KUTOOLS AI

  • Интеллектуальное выполнение: Выполняйте операции с ячейками, анализируйте данные и создавайте диаграммы — всё это доступно через простые команды.
  • Пользовательские формулы: создавайте индивидуальные формулы для оптимизации рабочих процессов.
  • Программирование на VBA: Пишите и внедряйте код VBA легко и без усилий.
  • Анализ формул: Легко разбирайтесь даже в самых сложных формулах.
  • Перевод текста: Ломайте языковые барьеры прямо в ваших таблицах.
Расширьте возможности Excel с помощью инструментов на базе ИИ.Скачать сейчаси ощутите эффективность, как никогда раньше!

VBA: Генерация случайных значений с заданными вероятностями

Для пользователей, которым нужна высокая степень автоматизации или требуется сгенерировать большой объём случайных значений (например, тысячи выборок), Excel VBA предлагает практичное решение — более быстрое и гибкое по сравнению с формулами на листе. Этот подход особенно эффективен при работе с крупными наборами данных или при массовой генерации случайных результатов для моделирования.

1.Перейдите в Инструменты разработчика>Visual Basic, затем в окне VBA выберите Вставка>Модульи вставьте следующий код в модуль:

Sub GenerateRandomWithProbability()
    Dim rngValues As Range
    Dim rngProbs As Range
    Dim n As Long
    Dim i As Long
    Dim cumProbs() As Double
    Dim valList() As Variant
    Dim randNum As Double
    Dim resultRange As Range
    Dim idx As Long
    
    ' On Error, ignore
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    ' Select values
    Set rngValues = Application.InputBox("Select values range", xTitleId, Type:=8)
    
    ' Select probabilities
    Set rngProbs = Application.InputBox("Select probabilities range", xTitleId, Type:=8)
    
    ' Number of random values to generate
    n = Application.InputBox("Number of random values to generate", xTitleId, "10", Type:=1)
    
    ' Where to output
    Set resultRange = Application.InputBox("Select output start cell", xTitleId, Type:=8)
    
    If rngValues.Rows.Count <> rngProbs.Rows.Count Then
        MsgBox "Values and probabilities range must be the same size.", vbExclamation
        Exit Sub
    End If
    
    ReDim cumProbs(1 To rngValues.Count)
    ReDim valList(1 To rngValues.Count)
    
    ' Calculate cumulative probabilities
    cumProbs(1) = rngProbs.Cells(1, 1).Value
    valList(1) = rngValues.Cells(1, 1).Value
    
    For i = 2 To rngValues.Count
        cumProbs(i) = cumProbs(i - 1) + rngProbs.Cells(i, 1).Value
        valList(i) = rngValues.Cells(i, 1).Value
    Next i
    
    ' Generate random results
    For i = 1 To n
        randNum = Rnd
        For idx = 1 To UBound(cumProbs)
            If randNum <= cumProbs(idx) Then
                resultRange.Cells(i, 1).Value = valList(idx)
                Exit For
            End If
        Next idx
    Next i
End Sub

2. В окне VBA нажмите кнопку Кнопка запуска запуска, чтобы выполнить код. Далее последовательно выберите: диапазон значений, диапазон вероятностей, количество генерируемых случайных значений и начальную ячейку для вывода. Макрос мгновенно заполнит целевые ячейки случайными значениями в соответствии с заданными вами вероятностями.

  • Этот процесс можно повторять для больших наборов данных, а столбец с результатами — настроить на любом листе.
  • Если сумма вероятностей в вашем диапазоне значительно отличается от 1, распределение может оказаться искажённым — всегда проверяйте исходные данные.
  • Это решение идеально подходит для автоматизированной выборки, моделирования и воспроизводимого пакетного генерирования.

Советы: Храните значения и вероятности в смежных и чётко выровненных диапазонах. Обязательно сохраняйте документ перед запуском макросов — действия VBA невозможно отменить с помощью команды «Отменить».


Связанные статьи:

Лучшие инструменты повышения продуктивности в Office

🤖KUTOOLS AI Помощник: Преобразуйте Анализ данных с помощью:Интеллектуального выполнения   |  Генерации кода|  Создания пользовательские формулы  |  Анализа данных и построения диаграмм|  Вызова Расширенные функции
Популярные функции:Поиск, выделение или Отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячеек без потери данных   |  Округление без использования формул
Супер ПОИСК:VLookup по нескольким критериям  |  VLookup по нескольким значениям  |   VLookup по нескольким листам   |   Распознавание нечетких соответствий
Расширенный раскрывающийся список:Быстрое создание выпадающего списка   |  Зависимый выпадающий список   |  Выпадающий список с множественным выбором
Управление столбцами:Добавление заданного количества столбцов|Перемещение столбцов|Переключение видимости скрытых столбцов|Сравнение диапазонов и столбцов
Избранные функции:Сетка фокусировки   |  Просмотр дизайна   |Улучшенная строка формулы   | Управление рабочими книгами и листами   |  Библиотека ресурсов(автотекст)|  Выбор даты   |  Объединить листы  |  Шифрование/Расшифровать ячейки   | Отправка писем по списку   |  Супер фильтр   |   Специальный фильтр(Фильтр ячеек с жирным шрифтом/курсив/зачёркивание…) …
Лучшие наборы инструментов 15:12 Текстовыеинструменты(Добавить текст,Удалить определенные символы, …)|   50+Типыдиаграмм(Диаграмма Ганта, …)|   40+ Практические формулы(Рассчитать возраст на основе даты рождения, …)|   19 Инструментывставки(Вставить QR-код,Вставка изображения по пути, …)|   12 Инструментыпреобразования(Преобразовать в слова,Конвертация валют, …)|   7 Объединить и разделитьИнструменты(Расширенное объединение строк,Разделить ячейки, …)|… и многое другое
Используйте Kutools на предпочитаемом языке — поддержка английского, испанского, немецкого, французского, китайского и ещё 40+ языков!

Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…


Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу

  • Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
  • Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!

Все надстройки Kutools — один установщик

Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.

ExcelWordOutlookTabsPowerPoint
  • Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
  • Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
  • Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
  • 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек