|
|
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
Вот пример - лампочка в коридоре. Ее в обычной жизни включают рандомно. Но днем редко и ненадолго, вечером чаще и дольше, ночью - ну иногда, на время чтоб в туалет сходить :) функцию вероятности включения от времени суток составить можно, но как рандом к ней подтянуть, чтоб получилось "аля человек"? о очень интерестно как бы это по научному , чтоб рандом правильным рандомом был Поясню: Забавлялся тут вечерком - скачал словарь русских слов, и составил массив зависимостей, сколько раз какая бувка после какой бывает. Потом рандомом выбирал буквы, и с учетом этой зависимости генерил слова. Получались прикольные :) Но делал я так: например после буквы "а" идет "м" 1000 раз, "т" 50 раз "с" 10 раз я генерил рандомное число от 0 до максимума (в данном случае 1000) а потом находил ближайшее к рандомному и брал его А ведь если "п" после "р" встречается всего 20 раз (все цифры условные),то получается в первом случае распределение от 0 до 1000, а во втором от 0 до 20... Вот собственно и вопрос: как по научному то лучше? так, как я делал, иль все сначала в проценты перевести, чтоб уровнять, а не по абсолютному значению брать, или еще как.. ЗЫ. вопрос к тем кто знает ТВ ибо догадок у меня самого валом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 23:57 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
ЗЫЫ. все примеры просто примеры Хотелость бы знать именно алгоритм как рандом притянуть к распределению, в независимости от того, что это именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 00:08 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
Ну сделай в лоб: 1. Посчитай количество включений лампочки за каждый час (пол-часа, пять минут, сам подбери интервал). 2. Усредни результат подсчета за несколько дней. 3. Полученные цифры сложи - полученную сумму обозначь за 100% 4. Посчитай процент на каждый интервал (100 * сумма за интервал / сумма за день) 5. Полученные цифры процентов положи один за другим на интервал 0-100. 6. Возьми случайное число от 0, до 100 - найди на какой из отрезков это число попадает. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 04:57 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsqlфункцию вероятности включения от времени суток составить можно, но как рандом к ней подтянуть, чтоб получилось "аля человек"? 1. Надо время суток анализировать. Для каждого времени своя функция. 2. Снять наблюдение включений. Например днем, минуты: 3,5,3,10,1,7,6 Код: sql 1. 2. 3. массив тут дает вероятностное распределение, т.е. если чаще включают на 3 минуты чем на 10, то 3 должно встречаться больше раз чем 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 08:12 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsqlфункцию вероятности включения от времени суток составить можно, но как рандом к ней подтянуть, чтоб получилось "аля человек"? В данном случае нужны две функции. Первая - вероятность того, что в данный промежуток времени (скажем, единица дискретности минута) лампочку включат. Вторая - вероятное время горения лампочки, если её включат (учитывая вероятность, что её забудут погасить, кстати). Соответственно в начале каждой минуты генерится RND. Если полученное значение меньше значения первой функции - то лампочка включается, и по второй генерируется время её работы. Можно дополнительно сгенерить случайный "хвост" ко времени включения в секундах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 08:45 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
Господа, я всем благодарен за ответы, но всеже: iskatelsqlХотелость бы знать именно алгоритм как рандом притянуть к распределению, в независимости от того, что это именно. мне не лампочку зажигать нужно и не генератор слов... мне понять истину нужно... (ну да, была у нас теория вероятностей, лекций 12, было это 15 лет незад... там только объединение и пересечение успели преподать... застойные годы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 23:56 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsqlГоспода, я всем благодарен за ответы, но всеже: iskatelsqlХотелость бы знать именно алгоритм как рандом притянуть к распределению, в независимости от того, что это именно. Определяешь нужное матожидание, определяешь нужную дисперсию, вызываешь функцию ГПСЧ нормального распределения с этими параметрами. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 14:26 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsql, 1) на основе полученных данных расчитываем параметры случайного распределения 2) генерируем случайные величины из полученного распределения 3) все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 14:53 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsqlПоясню: Забавлялся тут вечерком - скачал словарь русских слов, и составил массив зависимостей, сколько раз какая бувка после какой бывает. Потом рандомом выбирал буквы, и с учетом этой зависимости генерил слова. Получались прикольные :) Но делал я так: например после буквы "а" идет "м" 1000 раз, "т" 50 раз "с" 10 раз я генерил рандомное число от 0 до максимума (в данном случае 1000) а потом находил ближайшее к рандомному и брал его А ведь если "п" после "р" встречается всего 20 раз (все цифры условные),то получается в первом случае распределение от 0 до 1000, а во втором от 0 до 20... Вот собственно и вопрос: как по научному то лучше? так, как я делал, иль все сначала в проценты перевести, чтоб уровнять, а не по абсолютному значению брать, или еще как.. Тебе нужна интегральная фунция распределения твоей случайной величины которая задана таблично. Строится она легко. Из твоей плотности распределения ты строишь другую функцию путём накопления величин каждого столбкиа. Получается новая функция которая неубывает и заключена в области значений от 0.0 до 1.0. Для кейсов с пред-условиями почитай про Байесовские сети или Марковские сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 14:47 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsqlфункцию вероятности включения от времени суток составить можно, но как рандом к ней подтянуть, чтоб получилось "аля человек"? .... вопрос к тем кто знает ТВ ибо догадок у меня самого валом А потом создаются топики "нафиг программисту высшее образование". Формула из первых недель курса тервера... Ну вот, что, ли, чтобы попроще: http://ecocyb.narod.ru/513/immod/imms3_2.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 14:28 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
softwarer, главное, это уметь найти нужную страницу в справочнике инженера-строителя, понять, что же там написано и применить на практике. вот как нас учили в универе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2015, 00:15 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
Задача: требуется перемешать 5(допустим) карт с помощью JS для перемешивания была использована следующая функция //Тестовые карты : tst = [1, 2, 3, 4, 5] // Перемешиваем: tst.sort( function(a,b) { return Math.random()-0.5; } ) Вопрос: по-честному были перетасованы карты или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2015, 21:17 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
mini.weblabВопрос: по-честному были перетасованы карты или нет? Поскольку array.sort в JScript - чёрный ящик, уверенно ответить на этот вопрос невозможно. Впрочем, ни один алгоритм сортировки не использует сравнения "каждый с каждым", чтобы сначала получить данные для ранжирования, а только потом сортировать (впрочем, это и невозможно, поскольку рандом с большой вероятностью породит противоречивый набор бинарных сравнений). Следовательно, результаты сортировки определяются величиной сгенерированного случайного значения на начальных этапах больше, чем на завершающих. Т.е. получившийся алгоритм нельзя считать "честным". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 08:22 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
Вообще говоря, ни одна функция random не является "честной", поскольку генерирует не случайные, а "просчитанно-случайные" числа, т.е. используется некая функция, дающая каждый раз один и тот же результат, при одних и тех же начальных значениях. Можно конечно использовать в качестве начального значения что-то машинное, например показания часов, но все равно это не "настоящая случайность" (и существует ли она? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 09:21 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
S.G.Можно конечно использовать в качестве начального значения что-то машинное Math.random не умеет seed вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 09:23 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
Предположения: 1) На данном этапе претензий к работе Math.random() нет 2) JS использует optimized bubble sort :-) Пример: будем сортировать [3, 7, 2] Step 1: [3,7,2] -> [3, 7, 2] [3, 7, 2] -> [3, 2, 7] Step 2: [3,2] -> [2,3] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 11:59 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
mini.weblabВопрос: по-честному были перетасованы карты или нет? С высокой степенью вероятности - нет. Функция сравнения нестабильна, а в такой ситуации алгоритм сортировки может повести себя непредсказуемо. Например, просто сто раз переставит первую карту со второй и обратно. Если хотите тасовать честно - припишите каждой карте value = random и сортируйте по этому value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 12:26 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
softwarer, 1) почему нестабильна ? можно пример ? 2) у нас 5 карт, так что возможность автор сто раз переставит первую карту со второй и обратно исключается см. предположения по алгоритму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 12:41 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
mini.weblab1) почему нестабильна ? можно пример ? Допустим, у нас три карты, (a, b, c). Ваша функция сравнения запросто может при первом вызове сказать, что a < b, при втором - что b < c, при третьем - что c < a. Как алгоритм сравнения отработает в таких условиях - вопрос, прямо скажем, открытый. Глобально его никто не исследовал и не будет, ибо идиотизм. Вы, конечно, можете исследовать, как оно будет в конкретной ситуации... но даже если исследуете правильно, завтра в библиотеке сменят реализацию, и Ваш код начнёт с вероятностью 50% попросту виснуть (то есть сортировка никогда не закончится). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 12:49 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
iskatelsqlНо делал я так: например после буквы "а" идет "м" 1000 раз, "т" 50 раз "с" 10 раз я генерил рандомное число от 0 до максимума (в данном случае 1000) а потом находил ближайшее к рандомному и брал его А ведь если "п" после "р" встречается всего 20 раз (все цифры условные),то получается в первом случае распределение от 0 до 1000, а во втором от 0 до 20... Вот собственно и вопрос: как по научному то лучше? так, как я делал, иль все сначала в проценты перевести, чтоб уровнять, а не по абсолютному значению брать, или еще как.. Давайте вернёмся к нашим буквам и лампочкам. У тебя уже есть таблица относительных частот этих букв? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 13:07 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
softwarer, 1) поясню, это задача по теме топика (и JS здесь замешан эпизодически: я с ним сейчас разбираюсь) :-) 2) рассмотрим пример с тремя картами, для перемешивания мы используем улучшенную пузырьковую сортировку, поэтому бесконечный цикл невозможен. В примере с тремя картами происходит следующее: у нас 3 коробочки 1, 2, 3 а) на первом этапе мы находим "наибольшее" значение и кладем его в 3ю коробочку б) на втором мы находим "наибольшее" значение из 2х и раскладываем значения во вторую и третью коробочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 13:09 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
mini.weblab, я всё сказал и не имею намерения спорить. Никто не забирает у Вас права разложить максимальное количество граблей для себя и не дай бог продолжателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 13:13 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
softwarer, это не грабли ! это просто задачка на проверить правильность работы алгоритма ! вот кстати, пожалуйста, корректный алгоритм сортировки Код: javascript 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 13:32 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
mini.weblab, т.е. перемешивания (а не сортировки) :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 13:34 |
|
||
|
Как рандом "притянуть за уши"
|
|||
|---|---|---|---|
|
#18+
mini.weblab2) рассмотрим пример с тремя картами, для перемешивания мы используем улучшенную пузырьковую сортировку, поэтому бесконечный цикл невозможен. Так понимаю это утверждение высосано из этого mini.weblab2) JS использует optimized bubble sort Но почему именно так? и только так? и не может быть никак иначе? PS По моему проще свой код написать в 5-10 строк, чем надеяться что сортировка во всех реализациях JS одинакова и никогда не будет изменена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2015, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38970633&tid=1341013]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 369ms |

| 0 / 0 |
