Страницы: 1
RSS
Генерация случайных чисел по нескольким критериям
 
Помогите пожалуйста с формулой или макросом, который сгенерирует набор случайных чисел в диапазоне 10-100 таким образом, чтобы:
70% этих случайных чисел были в диапазоне 80-100
15% этих случайных чисел были в диапазоне 60-79
10% этих случайных чисел были в диапазоне 40-59
5 % этих случайных чисел были в диапазоне 10-39
 
Цитата
Olga H. написал: сгенерирует набор случайных чисел
Сколько д.б. чисел?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Можно так попробовать:

Код
Option Explicit
' Генерирует случайное число от b до e
Function rnd2(ByVal b As Double, ByVal e As Double) As Double
  rnd2 = b + (e - b) * Rnd
End Function

' генерирует массив случайных чисел
Sub GenRnd()
    Dim n As Long  ' количество чисел в массиве
    Dim arr() As Long, i As Long, d As Double, b As Double, e As Double
    n = 100000
    ReDim arr(1 To n)
    For i = 1 To n
        d = rnd2(0, 100)   ' для процентного распределения
        Select Case d
            Case Is > 30: b = 79.5: e = 100.5
            Case Is > 15: b = 59.5: e = 79.5
            Case Is > 5: b = 39.5: e = 59.5
            Case Else: b = 9.5: e = 39.5
        End Select
        arr(i) = Round(rnd2(b, e), 0)
    Next i
End Sub
Владимир
 
Код
=ЕСЛИ(СЛЧИС()<0,7;СЛУЧМЕЖДУ(80;100);ЕСЛИ(СЛЧИС()<0,5;СЛУЧМЕЖДУ(60;79);ЕСЛИ(СЛЧИС()<0,67;СЛУЧМЕЖДУ(40;50);СЛУЧМЕЖДУ(10;39))))
 
Казанский,
спасибо, ваша формула работает: вставила формулу в ячейку и растянула за чёрный крестик по необходимому диапазону ячеек. Все ячейки автозаполнились случайными числами в заданном диапазоне.

sokol92,
у меня к вам просьба, приложите пожалуйста Пример с вашим макросом и выпавшими случайными числами, чтобы понять как этот макрос можно запустить, чтобы случайные числа появились в диапазоне ячеек.

JayBhagavan,
необходимы 552 случайных числа. Вопрос решался формулой от Казанского.
Изменено: Olga H. - 20.10.2018 09:14:04
 

При использовании формулы для генерирования случайных чисел, которую дал Казанский в сообщении №4, возникает такая проблема: вставляю формулу в ячейку A1, протягиваю за крестик вниз и вбок по выбранному диапазону ячеек- и всё нормально получается. Сохраняю документ с полученными числами, а когда заново открываю документ, то значения которые были ранее записаны- уже поменялись.

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

 
Это не проблема, а свойства функций СЛЧИС И СЛУЧМЕЖДУ. Чтобы не изменялись - скопируйте полученный диапазон и вставьте только значения.
 
Замена формулы на ее результат или на этом сайте.
Изменено: sokol92 - 27.11.2018 21:15:50
Владимир
 
Alingva,
Спасибо, ваш приём помог, теперь числа в ячейках стабилизировались.
1)Выделила диапазон A1:B3
2)Скопировала этот диапазон.
3)Встала на ячейку A1.
4)Вызвала правой кнопкой команду "Параметры вставки".
5)В "Параметрах вставки" выбрала "Значения"

Теперь случайно сгенерированные числа не меняются после повторного открытия документа.
Изменено: Olga H. - 27.11.2018 22:40:45
 

Казанский,

Понадобилось заполнить диапазон только чётными числами. Подскажите пожалуйста, как сделать, чтобы ваша формула, указанная в сообщении № 4, выдавала только чётные числа.

 
Olga H., наверно так - уменьшить все аргументы СЛУЧМЕЖДУ в 2 раза, результат умножить на 2
Код
=ЕСЛИ(СЛЧИС()<0,7;СЛУЧМЕЖДУ(40;50);ЕСЛИ(СЛЧИС()<0,5;СЛУЧМЕЖДУ(30;39);ЕСЛИ(СЛЧИС()<0,67;СЛУЧМЕЖДУ(20;25);СЛУЧМЕЖДУ(5;19))))*2
 
Казанский,
спасибо, ваша формула помогла и она универсальная, только диапазоны чисел нужные подставляй. Уменьшила желаемые диапазоны чисел в два раза, подставила их в вашу формулу, вставила в ячейку и полученное число растянула на необходимый диапазон ячеек на листе.
 
Цитата
Казанский написал:
1=ЕСЛИ(СЛЧИС()<0,7;СЛУЧМЕЖДУ(40;50);ЕСЛИ(СЛЧИС()<0,5;СЛУЧМЕЖДУ(30;39);ЕСЛИ(СЛЧИС()<0,67;СЛУЧМЕЖДУ(20;25);СЛУЧМЕЖДУ(5;19))))
класс
Страницы: 1
Наверх