初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1260

 
Vitaly Muzichenko:

你能告诉我怎么写才能得到随机的6位数吗?

void OnStart()
{
   srand(GetTickCount());
   for(int i = 0; i < 10; i++)
   {
      uint random = rand_32() % 1000000;  // %1000000 --> ограничим 6-ю знаками 
      printf("random = %u", random);
   }
}
//+------------------------------------------------------------------+
uint rand_32()
{
   return(((uint)rand()) << 16 | rand());
}
//+------------------------------------------------------------------+
 
Alexey Viktorov:

结果是什么呢?我并不主张无懈可击......)

结果,我不得不离开它,因为它少于6个字符。

if(v>=min && v<=max)

Igor Makanu:

我今晚就去试试。

 
Igor Makanu:

5位数的漏掉了


总之,问题解决了,谢谢大家。

 
Vitaly Muzichenko:

5位数的数字正在滑过

是的,他们会的。

我以为这只是一个6位数的挑战。

作为一个选项,用rand()%10生成第一个数字。

 
Igor Makanu:

是的,他们会的。

以为任务只是不超过6位数

作为一个选项,用rand()%10生成第一个字符。

把它放回代码中。

if(v>=min && v<=max)

这就够了,反正这个功能每天都会被调用 几次。

 
Vitaly Muzichenko:

把它放回代码中。

这就够了,反正这个函数每天都要被调用 几次。

更简单的方法

这样写

uint random = (rand() % 9 + 1) * 1000000 +   // первый знак
                    rand_32() % 100000;      // ограничим 5-ю знаками
 
Igor Makanu:

比这更简单。

所以要把它写下来。

好吧,你可以随机拨打每个标志(六件),并收集数字)

 
Valeriy Yastremskiy:

好吧,你可以把每个角色随机化(六块),然后收集数字)

是的,但它可能是一个坏的兰特--你需要测试。

我认为,将16位的rand()移位,并在低位添加更多的rand()=得到32位--我的例子rand_32(),是比较容易的。

 
Igor Makanu:

是的,但它可能是一个坏兰特--我需要测试一下。

我认为将一个16位的rand()移位,并在低位加上另一个rand()=得到一个32位的rand_32()--我的例子,这样做更容易。

我同意,要么测试,要么调整发电机逻辑,这通常比任务更昂贵。

 
Valeriy Yastremskiy:

我同意,要么是测试,要么是修补发电机的逻辑,这通常比手头的工作更昂贵。

)

原因: