Страницы: 1
RSS
UDF: генератор случайных чисел c заданием максимального значения числа
 
Добрый день.

Может у кого есть пользовательская функция генератора случайных чисел c заданием максимального значения числа.
Буду благодарен.
 
Код
Function random(ByVal predel As Integer) As Integer
    random = CInt(Int((predel * Rnd()) + 1))
End Function
 
еще вариант функции в A1
Код
 Function uuu&(n1&, n2&)
    uuu = Application.RandBetween(n1, n2)
End Function
Изменено: sv2013 - 17.09.2016 19:03:48
 
[USER=56987]Сергей Беляев[/USER, Ваша функция повторяет генерируемые числа при каждом запуске функции.
Как сделать так, чтобы генерируемые числа не повторялись?
 
Я поднимал уже здесь этот вопрос. Это недостаток встроенной функции Rnd.
А избавиться можно от этого, написав свой генератор.
Возьмите функцию SV2013
Изменено: Сергей Беляев - 17.09.2016 20:40:53
 
а чем функция СЛУЧМЕЖДУ не устраивает?
 
Генератор случайных чисел нужно реализовать в MS Word.
Поэтому VBA.
 
Цитата
Pawel1 написал:
Генератор случайных чисел нужно реализовать в MS Word
А здесь форум по Excel - ищите тематический форум по Word.
 
А при чем здесь Word?. Я буду писать здесь. Интересует код для VBA.  
 
Цитата
Сергей Беляев написал: А избавиться можно от этого, написав свой генератор
Покажите мне этот генератор, пожалуйста.
 
Цитата
Pawel1 написал:
Я буду писать здесь. Интересует код для VBA.
VBA ведь есть и в Power Point, в Outlook. Причём тут форум по Excel, если вопрос у Вас по Word?
 
Нет у меня никакого вопроса по Word. Это была опечатка. Формулами не пользуюсь принципиально.
 
Цитата
Pawel1 написал: Покажите мне этот генератор, пожалуйста.
Это зависит от того с какой частотой вы будете получать данные и какое кол-во чисел вам нужно. Если раз в час и вам нужно 2 состояния, то элементарно справится и проверка на четность минут системной даты. Если надо больше рандомных состояний и чуть чаще, то подойдут системные секунды. Если еще чаще, то надо искать через API системные счетчики или думать самому какие параметры компьютера меняются по равномерному или нормальному распределнию исходя из временных параметров  вашей задачи.
 
Системные секунды подойдут. Как их использовать. Есть пример?
 
Цитата
Pawel1 написал: Есть пример?
Second(Time)
 
Как получить значение секунд это понятно. Как использовать эти значения в функции ?
 
Это и есть рандомное значение от 0 до 59. Какая вам еще нужна функция?
 
Pawel1, кнопка цитирования не для ответа. Перестаньте ее мучить!
 
Нужен генератор случайных чисел, UDF с заданием максимального значения случайного числа.  
 
Цитата
Как сделать так, чтобы генерируемые числа не повторялись?
Цитата
Я поднимал уже здесь этот вопрос. Это недостаток встроенной функции Rnd.
А избавиться можно от этого, написав свой генератор.
а избавиться от этого можно использовав 1 раз процедуру Randomize перед первым использованием Rnd. хоть непосредственно перед 1 использованием, хоть 1 раз при открытии файла.
Randomize инициирует Rnd на основе текущего времени - это гарантирует реально случайные  и никогда не повторяющиеся числа
Pawel1, используйте функцию из сообщения #2 в купе с Randomize
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Pawel1 написал: Формулами не пользуюсь принципиально
Ваше дело конечно, но зря.
Зачастую средства Excel эффективнее чем vba
Страницы: 1
Читают тему
Наверх