![]() |
макрос для генерации значений по условиям
Помогите, пожалуйста на VBA написать один скрипт, который генерирует значения по определенным условиям:
Например Пусть есть переменные и их значения a,b,c пол X1,X2,X3 м a a a ж b b b ж c c c Нужно сгенирировать значения, но так, чтобы соблюдались пропорции только в случайном порядке: например 30% мужчин в переменной X1 поставили ответ а, 40% мужчин поставили ответ b и ещё 30% мужчин поставили ответ с при этом 20% женщин в переменной X1 поставили ответ а, 65% женщин поставили ответ b и ещё 25% женщин поставили ответ с Аналогично и с другими переменными, их может быть несколько. Надо просто чтобы в самом годе было написано пол=200 человек переменная x1, пусть имеет пять градаций а,б,в,г,Д градация а=5%мужчин, 25%женищин. градация б=10% мужчин и 45% женщин ... Помогите, плиз такое сделать. |
Может вы лучше сначала конечную цель обозначите, а то процесс как-то не очень понятен...
|
Вложений: 1
okshef, конечный итог это эксель со сгенирированными по тем условиям данными, т.е. я могла бы задавать процентную пропорцию в ответах
например так. |
Давайте так, я начну уточнять, а вы поправляете:
1. Все условные мужчины (М) и женщины (Ж) - это столбец А. Общее количество - 200, 100 - М, 100 - Ж 2. Столбцы В и дальше вправо - переменные Х1, Х2 ... ХN 3. "Ответы", которые собираются по столбцам, могут иметь значения от "А" до "Д" (или от "А" до "Е" - в латинских символах) 4. При подсчете одинаковых ответов в некоем столбце XN вы получаете пропорцию. Обозначим ее, например, так: Рма - пропорция (%) ответов "А" у М Ржд - % ответов "Д" у Ж Задача: задавая значения Р (они будут находится в некоторых 10 ячейках) вы хотите, чтобы поле ячеек массив В2:XN201) заполнялось случайными значениями от "А" до "Д" (или от "А" до "Е")? Так? Сразу непонятки: Для задания пропорций для одного столбца нужно 10 ячеек, для другого - еще десять, третьего - еще, и т.д. Вам сразу нужно или только для одного столбца? А для какого? |
Цитата:
1. общее количество может быть любым, например 300, 210 мужчин и 90 женщин. Плюс мужчины и женщины это 2 градации, а может быть несколько градаций. Например слабый, умеренный, сильный. Я думаю вы поняли, что это качественный признак. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
т.е. как-то так. Знала бы VBA не просила бы помочь:)) задать пропорции Пол&X1 , м=49% (где м это любая категория может быть, а не только мужчину, т.к. это зависит от смысла категориальной переменной) ответ а, 51% = б. ж=10% ответ А, 90% ответ Б.. Если 4 варианта ответа, то 20% женщин поставили А, 40% поставили Б, 25%=с, и 15% = д, к примеру. Пол&X2 аналогично Пол&X3 Вот так:) |
Прежде чем приступать к программированию, нужна математическая модель, которой, увы, пока нет и, похоже, не предвидится... Вы пытаетесь решить уравнение с бесконечным количеством неизвестных:
Цитата:
Цитата:
Может кто-то еще попытается разобраться, мне не под силу. Признаю. |
Цитата:
|
Я не имела ввиду ,что 1 до бесконечности. Простой категорий может быть много. Давайте оставим от 1 до 100
|
Цитата:
1.Есть категории опрашиваемых людей, количество которых может быть любое, так как они между собой никак не связаны и обладают абсолютной автономностью. Например - "мужчины" и "женщины" (две категории), или там "категория1", "категория2", "категория3" (три категории по неизвестным параметрам). Может быть 10 категорий (мужчины 15-25лет, мужчины 25-35 лет, женатые/неженатые, с бородой/без бороды, по аналогии для женщин) 2. Есть некие вопросы, которые этим людям задают, они обозначаются х1, х2... хn. 3. Каждая категория может дать для каждого вопроса "х1"... "хп" ответ из заранее оговоренных вариантов - варианты "а-г" или "сосна-береза" или просто "понравилось / не понравилось". По идее нужно ходить ногами и опрашивать этих людей, а потом рассчитать процент для каждого из ответов на каждый из вопросов для каждой категории людей. Цитата:
4. Задача сводится к тому, чтобы не тратить время и никого не опрашивать, принять нужное соотношение ответов для каждой категории, а затем программно подтасовать результаты, с помощью скрипта равномерно расставив нужные ответы в ячейках каждого столбца в случайном порядке (чтобы никто подтасовки не заметил) в таком количестве, чтобы заданные проценты соблюдались. Цитата:
ИМХО как-то так. Судя по всему - речь о курсовике, дипломе, либо НИР. Судя по предыдущему посту - из сферы медицины или педогогики/психологии детей. Надеюсь, не свидимся в реальной жизни. |
a_axe, это не педагогика и не медицина, это социология и это лично для меня.
|
Цитата:
|
a_axe, вы верно поняли.
|
Elizavetta, могу предложить код с оговорками:
1.Могу ошибаться, генераторы случайных чисел подчиняются-таки определенным законам. Вероятно, с небольшими наборами данных это не будет прослеживаться, но в рамках конкретного алгоритма какое получается распределение - вопрос открытый. 2.Программа дает близкое соотношение по процентам, но не точное. Кроме того, для каждого вопроса после окончания работы скрипта возможно наличие одной незаполненной ячейки. Добивать алгоритм смысла не вижу (откровенно говоря - лень), раз вопрос по статистике - вероятно в любом случае будет нужно что-нибудь подправлять руками. Пустые ячейки легко отследить фильтром по таблице1 и устранить. 3. Таблица1 должна быть пустой - заполнение выполняется только в незаполненные ячейки. Алгоритм работы следующий: 1. Вашу таблицу с ответами необходимо отформатировать как таблицу (сочетание клавиш ctrl+L). Называться она должна "Таблица1" (Название можно привести в соответствие с помощью диспетчера имен вкладки "Формулы"). Скрин Таблицы1 и диспетчера имен
![]() 2. Необходимо создать в произвольном месте того же листа еще одну таблицу с картой ответов. Называться она должна "Таблица2". Названия заголовков непринципиальны, но содержание должно четко соответствовать Таблице1 по названию категорий и вопросов, т.е. если в Таблице2 фигурирует "Категория 3", значит она должна быть и в Таблице1, или если названия вопросов Х1 написаны как английское "икс", то в другой таблице не должно быть русское "хэ". В таблице указываете для каждой категории название вопроса, один из вариантов ответа и процент ответа в десятых долях от единицы. Можно заполнить не все категории - отработают только заполненные категории. Скрин Таблицы 2 (карты ответов)
![]() Собственно код
Код:
Public Sub Sociology() |
Время: 02:34. |
Время: 02:34.
© OSzone.net 2001-