Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 135
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Siete molto premurosi, grazie. Ho fatto un errore, non ho messo le parentesi, quindi avrei usato la funzione "sleale".
ZS: apportate correzioni al post originale.
Si prega di spiegare perché questa costruzione è migliore di una banale rand()%max.
ZS: Capisco cosa vuoi dire.
Bene allora - cosa succede se max>32767? La vostra funzione è di tipo uint, ma genera lo stesso massimo di rand(), cioè 32767
È meglio usare qualcosa come
Siete molto premurosi, grazie. Ho fatto un errore, non ho messo le parentesi, quindi userei la funzione "sleale".
ZS: apportate correzioni al post originale.
Vi rendete conto che se qualcuno vuole usare la vostra onesta funzione e scrivere get_rand(10), funzionerà 3276 volte più lento di rand()%10
Bene allora - cosa succede se max>32767? Dopo tutto, la vostra funzione è di tipo uint, ma genera il massimo che rand(), cioè 32767.
è meglio usare qualcosa come
E MathRand() restituisce int, cosa succede se qualcuno si aspetta un numero con sei zeri? Contando su un certo livello di pubblico. Qui, voi stessi sapete come ottenere > 32767.
Spesso scrivono rand()%3 senza pensarci due volte e poi vedono il mio messaggio e si rendono conto che sposta le probabilità.
Vi rendete conto che se qualcuno vuole usare la vostra onesta funzione e scrivere get_rand(10), funzionerà 3276 volte più lento di rand()%10
Beh sì, molto lento, per un ciclo di un milione di chiamate un callback mentre avverrà circa 300 volte. Se i vostri programmi consistono in for() nudi in cui get_rand() si agita, questo sarebbe critico, credo.
E vi rendete conto che lo scheduler dell'os occupa molto tempo della CPU e rallenta l'esecuzione in modo sproporzionato rispetto a rand()? Se avete tanta fretta, avete bisogno di un qualche tipo di dose.
E MathRand() restituisce int, cosa succede se qualcuno si aspetta un numero con sei zeri? Conto su un certo livello di pubblico. Qui, voi stessi sapete come ottenere > 32767.
Spesso scrivono rand()%3 senza pensarci due volte e poi vedono il mio messaggio e si rendono conto che ci sarà uno spostamento di probabilità.
Beh sì, molto lento, per un ciclo di un milione di chiamate un callback mentre avverrà circa 300 volte. Se i vostri programmi consistono in for() nude in cui get_rand() si agita, questo sarebbe critico, credo.
E vi rendete conto che lo scheduler dell'os occupa molto tempo della CPU e rallenta l'esecuzione in modo sproporzionato rispetto a rand()? Se avete tanta fretta, avete bisogno di un qualche tipo di dose.
E MathRand() restituisce int, cosa succede se qualcuno si aspetta un numero con sei zeri? Conto su un certo livello di pubblico. Qui, voi stessi sapete come ottenere > 32767.
Spesso scrivono rand()%3 senza pensare e vedono il mio messaggio e si rendono conto che questo sposterà le probabilità.
Beh sì, molto lento, per un ciclo di un milione di chiamate un callback mentre avverrà circa 300 volte. Se i vostri programmi consistono in for() nudi in cui get_rand() si agita, questo sarebbe critico, credo.
E vi rendete conto che lo scheduler dell'os occupa molto tempo della CPU e rallenta l'esecuzione in modo sproporzionato rispetto a rand()? Se avete tanta fretta, avete bisogno di un qualche tipo di dose.
Non abbiate paura di ammettere i vostri errori, non c'è niente di spaventoso o umiliante in questo. Tutti facciamo degli errori. È normale.
È molto più facile e più utile in termini di percezione della comunità dire: "Sì, ho sbagliato". Grazie". invece di cercare di trovare delle scuse.
Questo funziona molto più velocemente e in modo più flessibile:
Puoi velocizzarlo se lo ricodifichi da ulong a uint, se non hai bisogno di grandi numeri (hai bisogno di 3 rand() invece di cinque).
Non abbiate paura di ammettere i vostri errori - non c'è niente di spaventoso e umiliante in questo. Tutti facciamo degli errori. Non c'è problema.
È molto più facile e più utile per la comunità dire: "Sì, mi sono sbagliato". Grazie". Invece di cercare di giustificarsi.
Dopo tutto, questa opzione funziona molto più velocemente e universalmente:
Può anche essere velocizzato ricodificando da ulong a uint, se non avete bisogno di grandi numeri (3 rand() invece di cinque).
Quindi non siete confusi dall'iniquità della vostra implementazione (in termini di velocità, a proposito, sarà molto più lenta)? Fai come vuoi.
Zy: disonestà - generare diversi numeri di gamma con diverse probabilità.Quindi non siete confusi dall'iniquità della vostra implementazione (sarà molto più lenta in termini di velocità, tra l'altro)? Fai come vuoi.
Zy: la disonestà sta generando diversi numeri di gamma con diverse probabilità.Dici sul serio?
sì
https://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator
sì
https://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator
Quindi sei disposto a dare fuoco a una banconota da 100 dollari per trovare una monetina arrotolata sotto il letto?
Non dovresti sottovalutare il ruolo delle probabilità. A multimilioni di iterazioni questi "centesimi arrotolati" ti costeranno cifre abbastanza tangibili. Inoltre, il tuo codice è ovviamente irrazionale a piccoli intervalli (fare costantemente cinque chiamate a rand() è esattamente il "bruciare la nota")
Sei mesi fa questo argomento era già stato discusso sul forum, avevo suggerito questa opzione:
Forum sul trading, sistemi di trading automatico e strategie di trading di prova
Come ottenere un numero casuale in un intervallo di profondità N?
Alexey Navoykov, 2018.12.31 01:25
Il mio ultimo codice si è rivelato errato. Mi sono fatto troppi problemi con le cifre, qui c'è la variante giusta e più concisa allo stesso tempo: