Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Alexey Navoykov
интересная мысль, нкогда не задумывался об этом.
А вообще, с какой целью сделали rand(), а больше всего интересует почему диапазон от 1 до 32767 из каких критериев исходили.
и у вас тоже в работе больше 32767 тс?)
и у вас тоже в работе больше 32767 тс?)
Смотрю многие делают одну и ту же ошибку: используют оператор взятия остатка %. Такое допустимо лишь в том случае, когда исходный диапазон случайных чисел кратен делителю. Т.е. нашем случае такими делителями являются двойки в различных степенях: 2, 4, 8 и т.д. Так вот только для них можно писать такое: rand()%8.
Не понял. О каком перекосе речь? Оператор "%" возвращает целочисленный остаток от целочисленного деления.
Возможные "перекосы" могут быть связаны только с качеством алгоритма ГПСЧ.
Поэтому, лучше использовать (если это важно) реальный ГСЧ и быть спокойным за энтропию, матожидание, распределение и прчее
Не понял. О каком перекосе речь? Оператор "%" возвращает целочисленный остаток от целочисленного деления.
Возможные "перекосы" могут быть связаны только с качеством алгоритма ГПСЧ.
Поэтому, лучше использовать (если это важно) реальный ГСЧ и быть спокойным за энтропию, матожидание, распределение и прчее
Нужно упростить и листок бумаги. Представить 3 битный генератор с выхлопом от 0 до 7 и вероятностью 1/8, наивную попытку rand()%3. 0,1,2,0,1,2,0,1, вероятность двойки 2/8, а у других вариантов 3/8.
Ещё есть мнение, что качество некоторых ГПСЧ оставляет желать лучшего и младшие разряды могут иметь 010101010101, что не сильно похоже на случайность.
Нужно упростить и листок бумаги. Представить 3 битный генератор с выхлопом от 0 до 7 и вероятностью 1/8, наивную попытку rand()%3. 0,1,2,0,1,2,0,1, вероятность двойки 2/8, а у других вариантов 3/8.
Ещё есть мнение, что качество некоторых ГПСЧ оставляет желать лучшего и младшие разряды могут иметь 010101010101, что не сильно похоже на случайность.
Мешает некратный заданному диапазону "хвост"? Его можно просто исключить повторным запуском генератора.
Тогда распределение случайностей и в диапазоне пользователя будет честным генераторным, т.е. будет определяться только качеством ГПСЧ.
Реально случайное число в диапазоне 0 - 4294967295.
Генерируется побитно на основе счетчика тактов процессора. Работает и на Intel и на AMD, в том числе на новых поколениях.
Компилировать в Microsoft Visual Studio. Как уложить результат в заданный диапазон уже написали
Такой вариант мне больше всего нравится, он самый случайный. А из мт5 или мт4 это можно реализовать? И интересно, как реализована функция rand в мт5, может знает кто или разрабы ответят.
Скомпилировать длл-ку в MVS. Положить её в папку терминала:
C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\...\MQL5\Libraries
Импортировать функцию библиотеки в MQL
библиотека и код 32-разрядные, терминал тоже должен быть х32Мешает некратный заданному диапазону "хвост"? Его можно просто исключить повторным запуском генератора.
Тогда распределение случайностей и в диапазоне пользователя будет честным генераторным, т.е. будет определяться только качеством ГПСЧ.
На основе чего вы решили что распределение будет честным? Математические обоснования есть? У меня лично большие сомнения в этом, чисто интуитивно. Когда что-то исключаешь, то результат никак не может быть честным, ибо ты вносишь некую ЗАКОНОМЕРНОСТЬ в процесс генерации.