установка начального числа для случайного числа Excel

В приведенной ниже формуле Excel будет генерироваться случайное число из нормального распределения со средним значением 10 и дисперсией 1. Есть ли способ установить фиксированное начальное число, чтобы я постоянно получал фиксированный набор случайных чисел? Я использую Excel 2010

=NORMINV(RAND(),10,1)

person user2543622    schedule 16.10.2015    source источник
comment
есть ссылки, свидетельствующие о том, что такого метода не существует. answers.microsoft.com/en-us/office/forum/office_2003-excel/   -  person EngrStudent    schedule 16.10.2015
comment
Вы просто пытаетесь получить энергонезависимый набор случайных чисел или вам действительно нужно контролировать начальное число?   -  person John Coleman    schedule 16.10.2015


Ответы (4)


Вы можете реализовать свой собственный генератор случайных чисел, используя функции электронных таблиц. Например, в C ++ 11 есть генератор случайных чисел Лемера под названием minstd_rand, который получается путем повторения

X = X*g (mod m)

где g = 48271 и m = 2^31-1

В A1 вы можете поместить ваше начальное значение. В A2 введите формулу:

=MOD(48271*A1,2^31-1)

и скопируйте его так далеко, как вам нужно.

В B2 введите =A2/(2^31-1), а в C2 введите =NORM.INV(B2,10,1), копируя при необходимости. Обратите внимание, что вы всегда можете заменить начальное значение в A1 на

=RANDBETWEEN(1,2^31-2)

если вы хотите снова включить изменчивую случайность.

На следующем снимке экрана показано 25 случайных нормальных переменных, сгенерированных таким образом:

введите описание изображения здесь

Как видно из гистограммы, распределение кажется примерно нормальным.

person John Coleman    schedule 16.10.2015
comment
Итак, какое значение я должен использовать в качестве случайного числа? Я полагаю, числа в столбце B? - person Vylix; 15.09.2020
comment
Это правильно: если вы хотите равномерное случайное распределение, выберите столбец B. - person whiskeychief; 29.09.2020

Вы можете использовать VBA UDF () на основе функции Rnd (). Видеть:

Повторение случайных величин в VBA

person Gary's Student    schedule 16.10.2015

Я не претендую на то, что это идеальное решение, но оно работает для меня. Прелесть в том, что я могу присвоить случайное число определенной ячейке:

Public Function GetRandom(seed As Double, min As Double, max As Double) As Double
    Dim colrow As Double
    Dim range As Double

    range = max - min
    If (Application.Caller.Column() = Application.Caller.Row()) Then
        colrow = (Log(Application.Caller.Column() + 1) * Log(Application.Caller.Row() + 1)) * seed
    Else
        colrow = (Log(Application.Caller.Column() + 1) / Log(Application.Caller.Row() + 1)) * seed
    End If
    Rnd (-1)
    Randomize colrow 
    test = Rnd * range - range / 2
    GetRandom = colrow 
End Function

Использование:

=GetRandom($Z$1,1,-1)

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

введите здесь описание изображения

person koryakinp    schedule 08.09.2018

Прагматичное решение - скопировать значения из вашего образца в новый диапазон.

person Leo    schedule 10.03.2021