Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1 поскольку входное число равновероятное, то мы могли бы плюнуть на него и просто вернуть 2 + floor(random() * 6). Это число было бы равновероятным 2...7, только независимым от входа. Ну не... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:09 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton Не надо тестить. Ты получишь Гауссово распределение если сделаешь таких штук 20 сложений. На двух - незаметно. Но форма уже меняется. Представь что мы с тобой играем в кости на сумму. И я регулярно ставлю на то что сумма равна 6 или 7 и выигрываю. Ты - можешь ставить на любое число и с большей вероятностью проиграешь. Похоже ты не заметил что смещение каждый раз разное, это предыдущее значение Код: plaintext 1. PS Имя sum не очень подходящее. В процессе творчества смысл переменной поменялся, а название осталось (( Потестил на C# тоже работаетРезультат Код: plaintext Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:10 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Значение из входа можно брать несколько раз, чтобы получить одно для выхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:16 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Давай отвлечемся. Вот линейный метод. Код: plaintext 1. 2. 3. 4. Может нам посмотреть на него и поднять кое-какие идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:22 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Кстати периодическое вычитывание генератора rand.Next(N) + rand.Next(N) должно быть обоснованным. Хвост нас не ограничивал. Но я себе понимаю так что мы должны экономно и по хозяйски отнестись к работе полученных случайных чисел. Может они ценны для нас? Криптографически сложны? Может они идут из другой галлактики с длинным лагом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:27 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1 hVostt Значение из входа можно брать несколько раз, чтобы получить одно для выхода. Да, всё верно, в этом и смысл :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:30 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Dima T PS Имя sum не очень подходящее. В процессе творчества смысл переменной поменялся, а название осталось (( Потестил на C# тоже работает Я потестил на C#, на больших объёмах, входящий поток RNGCryptoServiceProvider: Код: powershell 1. 2. 3. 4. 5. 6. 7. Видим небольшие, но всё же отклонения, хм.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:32 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Dima T PS Имя sum не очень подходящее. В процессе творчества смысл переменной поменялся, а название осталось (( Потестил на C# тоже работает Я потестил на C#, на больших объёмах, входящий поток RNGCryptoServiceProvider: Код: powershell 1. 2. 3. 4. 5. 6. 7. Видим небольшие, но всё же отклонения, хм.. ещё вопрос: надо ли, чтобы самый первый вызов нашей функции, используя предоставленный рандомайзер целого числа [0 ... N-1] не более k раз, мог дать равновероятное число [0 ... M-1] ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:46 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton Кстати периодическое вычитывание генератора rand.Next(N) + rand.Next(N) должно быть обоснованным. Хвост нас не ограничивал. Но я себе понимаю так что мы должны экономно и по хозяйски отнестись к работе полученных случайных чисел. Может они ценны для нас? Криптографически сложны? Может они идут из другой галлактики с длинным лагом? Ну тут нормально, я просто смысла пока не понимаю. Почему 2 раза, а не 3, допустим. И ещё погонял на разных диапазонах, и получаю в принципе достойное распределение, с отклонениями не больше, чем в исходном потоке. Задача решена? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:46 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Прошу прощения за такое название топика ) Вот задача. На вход поступают случайные числа, допустим от 0 до 9, шанс выпадения любого из чисел одинаковый. Однако нам нужны только случайные числа от 2 до 7, с таким же одинаковым шансом выпадения. Решение, пропускать числа, не попадающие в рейндж, не очень интересно. Нужно именно преобразование. Можно что-то сохранять между операциями. Но в идеале чистое математическое преобразование нужно :) Если значения от 0 до 9 каждое является случайным, то их диапазон не важен. И фильтр по вхождению в диапазон и есть правильное решение. Что касается перекодирования из одного диапазона (10 значений) в другой (6 значений) то надо знать физику значений. Если физика - это случайность, то можно перекодировать как угодно, главное не 2 входных в 1 выходное. И потому можно вырезать любые 6 значений из входных и переобозвать в любом соответствии с выходными. Так что два варианта - фильтр по диапазону и перекодирование отличаются лишь видом фильтра и наличием перекодирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:47 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1 ещё вопрос: надо ли, чтобы самый первый вызов нашей функции, используя предоставленный рандомайзер целого числа [0 ... N-1] не более k раз, мог дать равновероятное число [0 ... M-1] ? Конечно, либо надо первое число целенаправлено выкинуть. В идеале, хотелось бы решение без состояния. Но и состояние тоже подойдёт, если будет понятно, что оно позволяет решить задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:48 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
ну я Если значения от 0 до 9 каждое является случайным, то их диапазон не важен. И фильтр по вхождению в диапазон и есть правильное решение. С фильтром понятно. Но мы можем долго не получать следующего значения при сужении фильтра. ну я Что касается перекодирования из одного диапазона (10 значений) в другой (6 значений) то надо знать физику значений. Если физика - это случайность, то можно перекодировать как угодно, главное не 2 входных в 1 выходное. И потому можно вырезать любые 6 значений из входных и переобозвать в любом соответствии с выходными. Брать остаток от деления, например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 16:56 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt mayton Кстати периодическое вычитывание генератора rand.Next(N) + rand.Next(N) должно быть обоснованным. Хвост нас не ограничивал. Но я себе понимаю так что мы должны экономно и по хозяйски отнестись к работе полученных случайных чисел. Может они ценны для нас? Криптографически сложны? Может они идут из другой галлактики с длинным лагом? Ну тут нормально, я просто смысла пока не понимаю. Почему 2 раза, а не 3, допустим. И ещё погонял на разных диапазонах, и получаю в принципе достойное распределение, с отклонениями не больше, чем в исходном потоке. Задача решена? )) Погоди. Я себе представил 10 маленких коробок. В которые падают шары. Равномерно. Линейно. Эти 10 малых коробок стоят на 7 больших коробках так что общая длина - ровная. У коробок - нет дна и верха. Но случайных шар. Попавший в 2 верхнюю коробку с разной долей вероятности попадает в 2 либо 3 большую нижнюю коробку. Вобщем такая вот физическая метафора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:03 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt, число штук элементов большего диапазона, равное остатку от целочисленного деления N\M должно просто скользить по меньшему диапазону. Остальные мапятся по кругу строго 1:1 вот и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:05 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
hVostt Имя пользователя1 ещё вопрос: надо ли, чтобы самый первый вызов нашей функции, используя предоставленный рандомайзер целого числа [0 ... N-1] не более k раз, мог дать равновероятное число [0 ... M-1] ? Конечно, либо надо первое число целенаправлено выкинуть. В идеале, хотелось бы решение без состояния. Но и состояние тоже подойдёт, если будет понятно, что оно позволяет решить задачу. очевидно, задачу легко решить напрямую и без состояний, только если N k делится на M, потому что k использований рандомайзера дают N k равновероятных исходов, которые надо равномерно раскидать на M групп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:06 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1 но это в любом случае не будет идеальный рандом в математическом смысле. по сути, здесь любое состояние - это результат предыдущих вызовов рандомайзера, то есть опять всё те же N k исходов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:18 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton Погоди. Я себе представил 10 маленких коробок. В которые падают шары. Равномерно. Линейно. Эти 10 малых коробок стоят на 7 больших коробках так что общая длина - ровная. У коробок - нет дна и верха. Но случайных шар. Попавший в 2 верхнюю коробку с разной долей вероятности попадает в 2 либо 3 большую нижнюю коробку. Вобщем такая вот физическая метафора. Да, прекрасная метафора! Хотелось бы формулу )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:21 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Вобщем всё просто. Просто выдаем шар из той нижней коробки в которой их больше. Только буфер надо. Грубо говоря мой алгоритм - буферизированный. Например как только рухноло с неба > 50 шаров - начинаем на каждый новый шар просто извлекать из самой тяжелой коробки. Profit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:28 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Dima T Потестил на C# тоже работает потестил на Java - результат противоречит математике и здравому смыслу Задал N=2, M=1000 Понятно, что последовательность нифига не случайная, но вывод программы этого не показывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:33 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Ну.. в малой коробке еще ест варианты. 1) Мы однозначно кидаем шар в большую. 2) Есть выбор кинуть чуть правее или чуть левее. Здесь не нужно случайный генератор. Здесь нужно просто шары по кругу разбрасывать. чтоб 30% падало например в 1 большой ящик и 40% в следующий большой. Мою мысль легко понять если нарисовать коробки и падающие шары. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:34 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton, то, что ты говоришь, можно понимать двояко. Одно из пониманий дает возможность точно предсказать, какой следующий шар извлечется. т.е. тогда на входе поток случайный у тебя окажется, а на выходе последовательно детерминированный. заполнение выходного потока должно сохранять видимость случайности той же характеристики, какова случайность входного потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:34 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Да это добротность генератора. О которой хвост пока еще не говорил. Линейность - будет. Добротность - ХЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:35 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
mayton ....начинаем на каждый новый шар просто извлекать из самой тяжелой коробки. Profit. Нифига не понял. Самое главное, не понимаю, что значит "самой тяжелой коробки" может ли быть такое, что коробки одинаковые по весу? если да, то фигня получится - даже матиматически доказывать не надо ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:36 |
|
||
|
Случайный конь в вакууме
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev Dima T Потестил на C# тоже работает потестил на Java - результат противоречит математике и здравому смыслу Задал N=2, M=1000 Понятно, что последовательность нифига не случайная, но вывод программы этого не показывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 17:42 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39925895&tid=1339820]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 287ms |

| 0 / 0 |
