Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за такое название топика ) Вот задача. На вход поступают случайные числа, допустим от 0 до 9, шанс выпадения любого из чисел одинаковый. Однако нам нужны только случайные числа от 2 до 7, с таким же одинаковым шансом выпадения. Решение, пропускать числа, не попадающие в рейндж, не очень интересно. Нужно именно преобразование. Можно что-то сохранять между операциями. Но в идеале чистое математическое преобразование нужно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:49 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Случайные числа от 0 до 9 поступают с "отрезка" (0,9) Надо сделать "отрезок" (0,5), брать случайные числа и прибавлять 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:53 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt, числа целые или вещественные? если второе, то 2 + r * 5 / 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:54 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Gennadiy Usov Случайные числа от 0 до 9 поступают с "отрезка" (0,9) Надо сделать "отрезок" (0,5), брать случайные числа и прибавлять 2. Ну это понятно. Одинаковое распределение должно остаться. Все поступающие числа должны быть использованы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:55 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1, Целые. Но операции преобразования могут быть в поле вещественных чисел, а на выходе опять целое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:56 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1 2 + r * 5 / 9 Отрезаем или округляем? Распределение гарантируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:58 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Имя пользователя1 2 + r * 5 / 9 Отрезаем или округляем? Распределение гарантируется? боюсь, что равномерно смапить (0, 1, ... 9) в (2, 3, ..., 7) не получится без вспомогательного рандома ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 12:00 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 12:41 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Прошу прощения за такое название топика ) Вот задача. На вход поступают случайные числа, допустим от 0 до 9, шанс выпадения любого из чисел одинаковый. Однако нам нужны только случайные числа от 2 до 7, с таким же одинаковым шансом выпадения. Решение, пропускать числа, не попадающие в рейндж, не очень интересно. Нужно именно преобразование. Можно что-то сохранять между операциями. Но в идеале чистое математическое преобразование нужно :) Можно попробовать завести массив счетчиков от 2 до 7. И отображать диапазон random(10) на 2..7 с инкрементом. Те ячейки которые получат больше счет - имеют шанс выйти на выход с обнулением (или с вычитанием). В этом есть что-то от алгортма Брезенхема. Типа накопления ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 12:54 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Dima T Код: sql 1. Одно из двух? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:04 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton Можно попробовать завести массив счетчиков от 2 до 7. И отображать диапазон random(10) на 2..7 с инкрементом. Те ячейки которые получат больше счет - имеют шанс выйти на выход с обнулением (или с вычитанием). В этом есть что-то от алгортма Брезенхема. Типа накопления ошибки. Я думал тут как-то Монте-Карло нужно применить, но не совсем понял как ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:05 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton Можно попробовать завести массив счетчиков от 2 до 7. И отображать диапазон random(10) на 2..7 с инкрементом. С массивом такая беда, плохо масштабируется на больших числах :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:06 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Dima T Код: sql 1. Одно из двух? )) Упс, невнимательно прочитал ТЗ )) Числа целые или вещественные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:09 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Тебе с большой вероятностью первый диапазон (m=10) будет нужен как число составное. Ну там ... 2^32, 2^64 e.t.c. Второй (n) может быть любым. Велика вероятность что будет некое кратное число между m,n и мы можем как-то на этом сыграть. Может трекать не n чисел на некое (p) номер группы. А номер группы будет трекать счетчики. Пока еще сам не понял что сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:10 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Dima T Упс, невнимательно прочитал ТЗ )) Числа целые или вещественные? Целые, но математика может быть в вещественном поле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:15 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Если числа целые, то нам надо 10 равновероятных вариантов превратить в 6 (2,3,4,5,6,7). ИМХО Без запоминания чего-нибудь после расчета никак не получить равную вероятность. Как вариант накапливать сумму Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:22 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Массив чисел, берем каждое следующее прокруткой массива в соответствии с случайным количеством шагов из последовательности 0-9. Например для интервала 2-7 - шесть чисел, индексы массива 0-5, первое число из последовательности - 8, получаем проходом по массиву 2, следующее число из последовательности 1, шаг по массиву получаем 3 и так далее. Сохранится ли закон распределения понятия не имею)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:25 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Dima T Упс, невнимательно прочитал ТЗ )) Числа целые или вещественные? Целые, но математика может быть в вещественном поле Преобразование целых в вещественные не поможет, т.к. все-равно 10 целых превратятся в другие 10 целых, и в итоге получим два числа будут выдаваться в вероятностью 1/10, а четыре других 2/10. Преобразование возможно только если количество исходных вариантов кратно количеству конечных. Например 10 в 5 (2...6) получится. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:29 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Dima T Если числа целые, то нам надо 10 равновероятных вариантов превратить в 6 (2,3,4,5,6,7). ИМХО Без запоминания чего-нибудь после расчета никак не получить равную вероятность. Как вариант накапливать сумму А как доказать, что распределение будет ровное? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:31 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Ну я пока один вариант вижу, гарантированный. Если на входе у нас [0..M) А нам нужно [0..N) То нужно брать из входа N значений, затем делить на M. === На приведённом примере. У нас 10 случайных чисел. Нам нужно 6. Значем берём 6 случайных чисел [0..9] и делим на 10. Но это очень плохо масштабируется на больших числах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:34 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Хотя у меня чёт сомнения насчёт "гарантированный" ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:34 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Dima T Преобразование возможно только если количество исходных вариантов кратно количеству конечных. Например 10 в 5 (2...6) получится. Код: sql 1. Это было бы слишком легко ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:36 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
iOracleDev Массив чисел, берем каждое следующее прокруткой массива в соответствии с случайным количеством шагов из последовательности 0-9. Например для интервала 2-7 - шесть чисел, индексы массива 0-5, первое число из последовательности - 8, получаем проходом по массиву 2, следующее число из последовательности 1, шаг по массиву получаем 3 и так далее. Сохранится ли закон распределения понятия не имею)) Во! А нужно хоть какое-то вшивое доказательство ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:37 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt, тебе нужен вспомогательный рандом. покажу на примере: допустим, на входе 5 возможных равновероятных вариантов, на выходе надо 3 --------------- --------------- красный, желтый и оранжевый отрезки (числа 0, 2, 4) однозначно заходят на (0, 1, 2), а зеленый и синий (1 и 3) надо резать. С вероятностью 2/3 зеленый уходит на красный отрезок, иначе на желтый. Для синего аналогично. Ты в своем преобразователе имеешь право поюзать рандом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:40 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39925620&tid=1339820]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 281ms |
| total: | 546ms |

| 0 / 0 |
