int MathRandRange(int min, int max) { return (MathRand() / 32768. * (max - min + 1) + min); }
Большое спасибо!
То что нужно!
То что нужно!
Хочу ещё вот что спросить.
Какова роль точки после числа 32768 ?
В документации ничего не смог найти по этому поводу, а без этого не до конца понимаю принцип работы.
Какова роль точки после числа 32768 ?
В документации ничего не смог найти по этому поводу, а без этого не до конца понимаю принцип работы.
Вообще-то нужно писать 32768.0 и означает, что число это не int, а double. Иначе будет целочисленное деление, что сильно отличается от нормального.
Всем спасибо.
Сбило с толку отсутствие ноля.
Сбило с толку отсутствие ноля.
Только будте осторожнее с этой функцией.
Результат может быть неожиданным - разные числа будут иметь разные вероятности, а некоторые могут не выпадать вообще.
Почему?
Лень писать второй раз.
Подробный комментарий сожрал форум.
Результат может быть неожиданным - разные числа будут иметь разные вероятности, а некоторые могут не выпадать вообще.
Почему?
Лень писать второй раз.
Подробный комментарий сожрал форум.
Mak писал (а): Подробный комментарий сожрал форум.
По каким ключевым словам твой коммент можно найти? Качество
функции для меня действительно критично. Функция, по комментарию stringo в 'Вопрос от новичка: две кривые в разных окнах' , является оберткой стандартной Сишной из CRT. Лично мне этот генератор пока нравится, распределение вполне равномерное.
Попробую привести пример.
Возьмём значения min=1, max=100.
Если MathRand() вернёт 50, то функция вернёт всёравно 1. И будет возвращать единицу для любых значений MathRand() от 1 до, примерно, 330. Далее будет возвращаться уже двойка. И т.д.
Генератор то и хороший, но в данной функции распределение получается совершенно другим.
Возьмём значения min=1, max=100.
return (MathRand() / 32768. * (max - min + 1) + min);Если MathRand() вернёт, например, 1, то то функция вернёт тоже 1.
Если MathRand() вернёт 50, то функция вернёт всёравно 1. И будет возвращать единицу для любых значений MathRand() от 1 до, примерно, 330. Далее будет возвращаться уже двойка. И т.д.
Генератор то и хороший, но в данной функции распределение получается совершенно другим.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что-то никак не придумаю от чего даже оттолкнуться :(