генератор случайных чисел - страница 3

 
Nikolai Semko:

Спасибо) хорошие размеры.

 
Nikolai Semko:

uint t = (Rand_uint() % (11 - 2 + 1) + 2);

а вот так, правильно контролировать диапазон. В данном пример от 2 до 11 ?

 
Pavel Verveyko:

а вот так, правильно контролировать диапазон. В данном пример от 2 до 11 ?

Да.
Только не контролировать, а генерировать.
Правда для такого диапазона правильнее использовать просто rand.
 
Nikolai Semko:
Да.
Только не контролировать, а генерировать.
Правда для такого диапазона правильнее использовать просто rand.

2 и 11 это только, для удобства проверки. Ну в целом вроде норм. Я пришёл к выводу, что можно сравнить предыдущее число с новым и тогда точно будут разные. А то бывает подряд попадаются.

 
Pavel Verveyko:

а вот так, правильно контролировать диапазон. В данном пример от 2 до 11 ?

Может нарушиться равномерность распределения, если желаемый диапазон не кратен исходному диапазону.

 
Aleksey Nikolayev:

Может нарушиться равномерность распределения, если желаемый диапазон не кратен исходному диапазону.

интересно.. то есть 2 - 10 было бы надёжнее ?

 
Pavel Verveyko:

интересно.. то есть 2 - 10 было бы надёжнее ?

Наверно, скорее от 2 до 9 - восемь чисел, степень двойки.

Я бы посмотрел на MathRandomUniform()

Документация по MQL5: Стандартная библиотека / Математика / Статистика / Равномерное распределение / MathRandomUniform
Документация по MQL5: Стандартная библиотека / Математика / Статистика / Равномерное распределение / MathRandomUniform
  • www.mql5.com
MathRandomUniform(const double,const double,int&) - Равномерное распределение - Статистика - Математика - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Nikolayev:

Наверно, скорее от 2 до 9 - восемь чисел, степень двойки.

Я бы посмотрел на MathRandomUniform()

Спасибо, такое я как раз искал, но там скорее всего ограничение RAND_MAX как и в обычной MathRand.
Вообще надо провести эксперимент. Тогда понятно будет подходит или нет.

 
Pavel Verveyko:
А если мне нужен диапазон больше, чем 32767 ? 

Какие то решения без импорта DLL возможны?

MathRand()*MathRand();
 

Renat Akhtyamov:

MathRand()*MathRand();


Так нежелательно получать  случайные числа. Такая конструкция может нарушить параметры распределения случайной величины.

Причина обращения: