Caractéristiques du langage mql5, subtilités et techniques - page 135
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Vous êtes très prévenant, merci. J'ai fait une erreur, je n'ai pas mis de parenthèses, j'aurais utilisé la fonction "injuste".
ZS : corrections apportées au message original.
Veuillez expliquer pourquoi cette construction est meilleure qu'un rand()%max trivial.
ZS : Je vois ce que tu veux dire.
Alors, que faire si max>32767 ? Votre fonction est de type uint, mais génère le même maximum que rand(), c'est-à-dire 32767.
Vous feriez mieux d'utiliser quelque chose comme
Vous êtes très prévenant, merci. J'ai fait une erreur, je n'ai pas mis de parenthèses, donc j'utiliserais la fonction "injuste".
ZS : corrections apportées au message original.
Vous réalisez que si quelqu'un veut utiliser votre fonction honnête et écrire get_rand(10), cela fonctionnera 3276 fois plus lentement que rand()%10
Alors, que se passe-t-il si max>32767 ? Après tout, votre fonction est de type uint, mais génère un maximum que rand(), c'est-à-dire 32767.
il vaut mieux utiliser quelque chose comme
Et MathRand() renvoie int, que faire si quelqu'un s'attend à un nombre avec six zéros ? Je compte sur un certain niveau de public. Ici, vous savez vous-même comment obtenir > 32767.
Ils écrivent souvent rand()%3 sans y réfléchir à deux fois, puis voient mon message et réalisent que cela va modifier les probabilités.
Réalisez-vous que si quelqu'un veut utiliser votre fonction honnête et écrire get_rand(10), cela fonctionnera 3276 fois plus lentement que rand()%10
Eh bien oui, très lent, pour un cycle d'un million d'appels un rappel alors que se produira environ 300 fois. Si vos programmes consistent en des for() nus où get_rand() s'agite, ce serait critique, je suppose.
Et vous rendez-vous compte que l'ordonnanceur de l'OS prend beaucoup de temps CPU et ralentit l'exécution de façon disproportionnée par rapport à rand() ? Si vous êtes si pressé, vous avez besoin d'une sorte de dos.
Et MathRand() renvoie int, que faire si quelqu'un s'attend à un nombre avec six zéros ? Je compte sur un certain niveau de public. Ici, vous savez vous-même comment obtenir > 32767.
Ils écrivent souvent rand()%3 sans y réfléchir à deux fois, puis voient mon message et réalisent qu'il y aura un changement de probabilité.
Eh bien oui, très lent, pour un cycle d'un million d'appels un rappel alors que se produira environ 300 fois. Si vos programmes consistent en des for() nus où get_rand() s'agite, ce serait critique, je suppose.
Et vous rendez-vous compte que l'ordonnanceur de l'OS prend beaucoup de temps CPU et ralentit l'exécution de façon disproportionnée par rapport à rand() ? Si vous êtes si pressé, vous avez besoin d'une sorte de dos.
Et MathRand() renvoie int, que faire si quelqu'un s'attend à un nombre avec six zéros ? Je compte sur un certain niveau de public. Ici, vous savez vous-même comment obtenir > 32767.
Ils écrivent souvent rand()%3 sans réfléchir et voient mon message et réalisent que cela va modifier les probabilités.
Eh bien oui, très lent, pour un cycle d'un million d'appels un rappel alors que se produira environ 300 fois. Si vos programmes consistent en des for() nus où get_rand() s'agite, ce serait critique, je suppose.
Et vous rendez-vous compte que l'ordonnanceur de l'OS prend beaucoup de temps CPU et ralentit l'exécution de façon disproportionnée par rapport à rand() ? Si vous êtes si pressé, vous avez besoin d'une sorte de dos.
N'ayez pas peur d'admettre vos erreurs, il n'y a rien d'effrayant ou d'humiliant à cela. Nous faisons tous des erreurs. C'est normal.
Il est beaucoup plus facile et plus utile en termes de perception par la communauté de dire "Oui, j'avais tort". Merci." au lieu d'essayer de trouver des excuses.
Cela fonctionne beaucoup plus rapidement et de manière plus souple :
Vous pouvez accélérer le processus en le recodant de ulong en uint, si vous n'avez pas besoin de grands nombres (vous avez besoin de 3 rand() au lieu de cinq).
N'ayez pas peur d'admettre vos erreurs - il n'y a rien d'effrayant ni d'humiliant à cela. Nous faisons tous des erreurs. C'est bon.
C'est beaucoup plus facile et plus utile pour la communauté de dire "Oui, j'avais tort". Merci." Au lieu d'essayer de vous justifier.
Après tout, cette option fonctionne beaucoup plus rapidement et de manière plus universelle :
On peut aussi accélérer le processus en recodant de ulong en uint, si l'on n'a pas besoin de grands nombres (3 rand() au lieu de cinq).
Vous n'êtes donc pas troublé par l'injustice de votre mise en œuvre (en termes de vitesse, soit dit en passant, elle sera beaucoup plus lente) ? Faites comme vous voulez.
Zy : malhonnêteté - générer des nombres de fourchettes différentes avec des probabilités différentes.Vous n'êtes donc pas troublé par le caractère inéquitable de votre mise en œuvre (qui sera d'ailleurs beaucoup plus lente en termes de vitesse) ? Faites comme vous voulez.
Zy : la malhonnêteté consiste à générer des chiffres de portée différente avec des probabilités différentes.Vous êtes sérieux ?
oui
https://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator
oui
https://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator
Vous êtes donc prêt à mettre le feu à un billet de 100 dollars pour trouver une pièce de 10 cents roulée sous le lit ?
Vous ne devriez pas sous-estimer le rôle des probabilités. À plusieurs millions d'itérations, ces "centimes roulés" vous coûteront des chiffres tout à fait tangibles. De plus, votre code est manifestement irrationnel pour les petites plages (faire constamment cinq appels à rand() est exactement le "brûlage de la note").
Il y a six mois, ce sujet était déjà discuté sur le forum, j'avais suggéré cette option :
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Comment obtenir un nombre aléatoire dans un intervalle de N-profondeurs ?
Alexey Navoykov, 2018.12.31 01:25
Mon dernier code s'est avéré être incorrect. J'ai fait trop d'histoires avec les chiffres. Voici une variante correcte et plus concise en même temps :