2. têm reflexões razoáveis sobre o assunto, podem ser discutidas à vontade.
1. boa solução, obrigado. A essência é a mesma que a minha, mas fez com uma matriz de marcação em vez de duas - daí o ganho de velocidade. Parece que não poderia fazer melhor.
Boa solução, obrigado. A ideia é a mesma que a minha, mas contenta-se com uma matriz de marcação em vez de duas - daí o ganho de velocidade. Parece que não poderia fazer melhor.
O ganho foi alcançado através de muitas pequenas melhorias. Também se pode acelerar um pouco mais "pequenas coisas".
Por exemplo, se reduzir o segundo parâmetro em um parâmetro antes de chamar a roleta:
int Roulette(double &array[], int MaxIndex)
{
double p, sum=0, zero = array[MaxIndex] - 1.1;
for(int i=0; i!=MaxIndex; i++)
{
select[i] = sum += array[i] - zero;
}
// бросим "шарик"
p=RNDfromCI(0,sum);
// посмотрим, на какой сектор упал "шарик"for(int u=0;u!=MaxIndex;u++)
{ if(select[u]>=p) return(u);}
return -1;
}
2. porque tem aí um número negativo na matriz - não percebo. Provavelmente partição sectorial?
1. o problema é que a entrada é de dados em bruto. Só precisam de ser convertidos em tamanhos de sector à medida que o jogo avança. Isso é parte do problema. :)
2. nem pensar. Só tortura joo, ele vai admiti-lo se você for suficientemente forte. Estou a depurar agora. ;)
E assim:
?
Acelerei-o por um factor de um e meio.
Zero (no seu caso "coeficiente") é tão estupidamente escolhido (quase "do nada").
// Como potencial utilizador, sugiro que ainda pense cuidadosamente sobre este ponto.
// Tenho ideias razoáveis sobre o assunto, podemos discuti-lo à nossa vontade.
Se colocar 1,1 em vez de 1 ao calcular zero, os resultados (numéricos, não de velocidade) serão exactamente os mesmos que no seu caso.
Essa pergunta é apropriada neste tópico https://www.mql5.com/ru/forum/6343/page5#comment_177533?
1. Acelerada por um factor de um e meio.
2. têm reflexões razoáveis sobre o assunto, podem ser discutidas à vontade.
1. boa solução, obrigado. A essência é a mesma que a minha, mas fez com uma matriz de marcação em vez de duas - daí o ganho de velocidade. Parece que não poderia fazer melhor.
A menos que se retire a marcação do laço:
:)
2. Claro.
Essa pergunta é apropriada neste tópico https://www.mql5.com/ru/forum/6343/page5#comment_177533?
E assim...
A entrada é uma matriz com tamanhos de sector( não é necessáriauma ordenação da matriz ).
Porque tem um número negativo na matriz - não compreendo. Provavelmente partição sectorial?
Boa solução, obrigado. A ideia é a mesma que a minha, mas contenta-se com uma matriz de marcação em vez de duas - daí o ganho de velocidade. Parece que não poderia fazer melhor.
O ganho foi alcançado através de muitas pequenas melhorias. Também se pode acelerar um pouco mais "pequenas coisas".
Por exemplo, se reduzir o segundo parâmetro em um parâmetro antes de chamar a roleta:
ainda se obtém uma diferença bastante mensurável.
Mas isso não é tudo. A verdadeira "grande vitória" está à frente. Espera, eu vou depurar e afixar.
// existe um pequeno bug - já corrigido.
E assim...
1. é introduzida uma matriz com tamanhos de sector( não é necessáriauma ordenação da matriz ).
2. porque tem aí um número negativo na matriz - não percebo. Provavelmente partição sectorial?
1. o problema é que a entrada é de dados em bruto. Só precisam de ser convertidos em tamanhos de sector à medida que o jogo avança. Isso é parte do problema. :)
2. nem pensar. Só tortura joo, ele vai admiti-lo se você for suficientemente forte. Estou a depurar agora. ;)
Não ficou impressionado com o resultado?
Isso é ingénuo. ;) Aumentar a matriz de entrada 10.000 vezes - depois é certo que vai ficar impressionado.
--
Estou à espera de testes comparativos // em grande variedade.
;)
Estou à espera de testes comparativos // numa grande variedade.
Parece não poder esperar... :)
Terei de ser eu a fazê-lo novamente:
Ao mesmo tempo penteei tudo na aula e coloquei em CRoulette.Reset();