MathRand() ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Artem Onopin
489
Artem Onopin  
Всем привет! Как указать диапазон всего из двух чисел 0 и 1? То есть мне нужно выбирать случайным образом числа 0 или 1, чтобы советник открывал сделки случайным образом либо бай либо селл, как это сделать? 
Dimitr Trifonov
10073
Dimitr Trifonov  
Artem Onopin:
Всем привет! Как указать диапазон всего из двух чисел 0 и 1? То есть мне нужно выбирать случайным образом числа 0 или 1, чтобы советник открывал сделки случайным образом либо бай либо селл, как это сделать? 
MathRand() %2 = либо 0 либо 1
LRA
702
LRA  
Artem Onopin:
Всем привет! Как указать диапазон всего из двух чисел 0 и 1? То есть мне нужно выбирать случайным образом числа 0 или 1, чтобы советник открывал сделки случайным образом либо бай либо селл, как это сделать? 
(int)(rand()/16384)
Artem Onopin
489
Artem Onopin  
Dimitr Trifonov:

Спасибо, хороший вариант решения!

Artem Onopin
489
Artem Onopin  
LRA:
(int)(rand()/16384)

Немного не то, серия бывает 0 затягивается на долго, как и 1. Но все равно спасибо за помощь.

LRA
702
LRA  
Artem Onopin:

Немного не то, серия бывает 0 затягивается на долго, как и 1. Но все равно спасибо за помощь.

   да одинаковые они

rand  и MathRand - это разные имена одной функции. Для большего разнообразия можно в OnInit инициализировать датчик

MathSrand(GetTickCount());  или   srand(GetTickCount());  что одно и то же

Igor Chemodanov
896
Igor Chemodanov  
Artem Onopin:
Всем привет! Как указать диапазон всего из двух чисел 0 и 1? То есть мне нужно выбирать случайным образом числа 0 или 1, чтобы советник открывал сделки случайным образом либо бай либо селл, как это сделать? 
rand () & 1
Maxim Kuznetsov
13788
Maxim Kuznetsov  
Artem Onopin:

Немного не то, серия бывает 0 затягивается на долго, как и 1. Но все равно спасибо за помощь.

если нужны более короткие серии 0,1 то это будет уже неравномерное распределение.

самый простой способ для мелких экспериментов - добавить зависимость

static int prev01=-1;

int Rand01() {

   int value=(MathRand()&1); // получить случайно 0 / 1

   if (prev01==value) value=(MathRand()&1); // уменьшаем длину серий 0 и 1

  prev01=value;

  return value;

}

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий