アルゴリズムの最適化 - ページ 3

 
joo:

セクタの幅は配列の値と一致させることができません。そうでなければ、アルゴリズムはすべての数に対して機能しなくなります。

重要なのは、数字が離れている距離です。すべての数字が最初の数字から離れれば離れるほど、落ちにくくなる。本質的には、我々は最後の数字が落ちるの確率は0に等しくなかったように、0.01の要因によって調整され、数字間の距離に比例した直線の棒に延期し、最初から最も遠いようにします。係数が高いほど、各セクターがより均等であることを示している。エクセルファイルが添付されていますので、実験してみてください。

1.理論的な確率の計算はエクセルに記載されている。最初の数字は最も高い確率、最後の数字は最も低い確率であるが0にはならない。

2) セクタの大きさが負になることは、どのような数の集合でも起こりません。集合が降順でソートされている場合、最初の数が最大です(集合の中で最大の数でも負数になります)。

よくわかりませんが、「数字がどの程度の距離にあるかが重要」というキーワードで表現された、先生の確率論に対する考え方は、すでに気に入っています。すべての数字が最初の数字から離れれば離れるほど、落ちにくくなる...」、テイク2(チェックショット):「配列の要素を ランダムに選べということですか?- 配列番号間の距離を考慮しないので、あなたのやり方は無駄です」。 正当な質問:洗脳はプログラムを書く論理を磨くための必修科目なのだろうか? 私はディレッタントコーダーのままでいた方が健康的だ。

そして、もしあなたが確率論が得意なら、ルーレットの論理-0から36までの範囲の乱数発生器(ルーレットが従来の、ヨーロッパ式の、アメリカ式のダブルゼロがない場合など...)。

 
Wangelys:

よくわからないけど、「数字と数字の距離が重要」というキーワードで表現される、先生の確率論に対する考え方はもう好きです。すべての数字が最初の数字から離れれば離れるほど、落ちにくくなる...」、テイク2(チェックショット):「配列の要素を ランダムに選ぶだけでいいんですね?- 配列番号間の距離を考慮しないので、あなたのやり方は無駄です」。 正当な質問:洗脳は、プログラムを書く論理を磨くための必修科目なのですか? 私はディレッタントコーダーのままでいたほうが、健康には良いのです」。

そして、あなたが確率論と良いしている場合は、ルーレットのロジック - 0から36までの範囲で乱数発生器(正規のヨーロッパのルーレット、アメリカンスタイルのダブルゼロなし、等...)。

実はカジノルーレットは比喩以外の何物でもなく、このスレッドでは少なくとも3人がすでに引っかかっている。

 
joo:

実はカジノルーレットは、このスレッドで少なくとも3人がすでにひっかかっている比喩に過ぎないのです。

- はいはい、わかったよ! イソップ語ね

- すみません、どこからですか?

 
Wangelys:

- はい、はい、わかりました!イソップ語です

- すみません、聞き取れませんでした、どこの国の方でしょうか?

ロバート・シェクリー?
 
joo:

セクタの幅は配列の値と一致してはいけません。そうでなければ、アルゴリズムはすべての数に対して機能しません。

重要なのは、数字が離れている距離です。すべての数字が最初の数字から離れれば離れるほど、落ちにくくなる。本質的には、我々は最後の数字が落ちるの確率は0に等しくなかったように、0.01の要因によって調整され、数字間の距離に比例した直線の棒に延期第一から最も遠いとして。係数が高いほど、各セクターがより均等であることを示している。エクセルファイルが添付されていますので、実験してみてください。

1.理論的な確率の計算はエクセルに記載されている。最初の数字は最も高い確率、最後の数字は最も低い確率であるが0にはならない。

2) セクターサイズが負になることは、集合が降順でソートされている限り、どのような数の集合でも起こりえません - 最初の数が最大です(集合の中で最大の数でも負の数でも動作します)。

これはIMHOの正しい発言ではありません。

имеем массив
 double a[10]={1,2,3,4,5,6,7,8,9,10};
какова вероятность выпадения каждого?
 55=1+2+3+4+5+6+7+8+9+10;
 double b[10]={1/55,2/55,3/55,4/55,5/55,6/55,7/55,8/55,9/55,10/55};
те вероятность выпадения [0] в 10 раз меньше чем [9].
теперь разметим массив где эти вероятности будут отображены
 double с[10]={1,3,6,10,15,21,28,36,45,55};
теперь при выпадении чисел от 1 до 55, если ранд55 <= c[x], то имеем нужный индекс.
для того чтоб работало и для отрицательных чисел нужно сдвинуть значения на 1-с[0].

теперь посмотрим изменяться ли вероятности при изменении чисел...
 double a[10]={2,4,6,8,10,12,14,16,18,20};
какова вероятность выпадения каждого?
 110=2+4+6+8+10+12+14+16+18+20;
 2/110==1/55
 double b[10]={1/55,2/55,3/55,4/55,5/55,6/55,7/55,8/55,9/55,10/55};
те вероятность выпадения [0] в 10 раз меньше чем [9], 
вероятность выпадения не изменилась, 
т.к. она измеряется относительно среднего рассчитанного по всему массиву.

 

次に、確率配列with[]の計算はエポック毎に1回必要なので、関数をRoletteEpoh()とRoletteRand()に分割する必要があります。

冒頭でジュが触れていたけれど。

が、c[]配列で落とした値を検索するだけで、高速化そのものは可能です。

標準的なビブリオ、すなわちクイックサーチの方法を使うことができます。

そして、その作り直したメソッドをMQL5のSpreadsheetsの 記事から取り入れた方が良い。

もし、リストされていない値を持つソートされた配列を素早く検索したい場合は、標準の検索方法ではなく、大文字の検索方法を使用してください(間違っているかもしれません、私は長い間、標準の検索方法を調べていません)。

 
joo:
ロバート・シャックリー?
いや、もう少しシンプルに、オデッサのプリヴォズ、シャックリー(ほとんどシェケルズと綴る)も好きですが。 しかし、あなたの次の比喩は、このブランチの参加者全員を「捕まえた」のです。
ジュ
ここで、最適なアルゴリズムの論理構築の問題点を議論することを提案する
-アルゴリズムロジックの最適な構築」という問題には当てはまらないので、コーディング手法やテクニックの改善ということになるのですが...。それとも私が間違っているのでしょうか?
 
Wangelys:
アルゴリズムロジックの最適構築」の問題点、それはコーディング手法やテクニックの向上というより......。それとも私が間違っているのでしょうか?

一般的な内容のスレッドです。

"自分のアルゴリズムが 速度(あるいは明瞭さ)の点で最適なロジックを備えていると疑う人がいれば、歓迎する"

そして、具体的に私のタスクは「...もっと速いバリエーションを 提案してください...」というものでした。もっと早く!私のアルゴリズムが正しいか間違っているかは問いません。この場合、より速く、つまり、誰かがアルゴリズムの別のバリエーションを提案した場合、それは私のものと同じ結果を出し、他のものは出せないようにする必要があります。そして、なぜかみんな自分のことを考え始めた。


よし、私の課題であったスピードアップが 解決された。:)

 
Wangelys:

- はい、はい、わかりました!イソップ語です

- すみません、聞き取れませんでした、どこの国の方でしょうか?

それは、遺伝的アルゴリズムから です。
Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
今、私は問題を抱えています。 私は、要素のコピーに大きな「コスト」がかかる配列(すなわち、ボリュームがあり、「重い」構造体、クラスオブジェクト、長い文字列などの要素)を効果的にソートする必要があります。 常識的には、それらをそのままにして、代わりにある種のポインタ(元の場所のセルのインデックス)によってソートすべきです。 ここから引用します:https://www.mql5.com/ru/forum/6476#comment_178318。
Если прямо тут перевести в подобие "техзадания", то нужна функция, на вход берущая массив и возвращающая 
второй массив (int), элементы которого являются индексами элементов входного массива, расположенными 
по убыванию (возрастанию).

В идеальном случае сделать перегрузки для всех стандартных типов + CObject (при обязательном требовании
к реализации функции Compare() у наследников CObject).  Хотелось бы и для структур, но похоже на стороне
разработчика никак не решаемо - виртуальных функций у структур нет (и не надо!), т.е. юзерскую функцию
Compare() не пришить, а "стандартное" отношение порядка для структур, естественно, не определено.  
尊敬するターミナルの開発者の方々の数々の現在の仕事はとりあえず置いておいて、mql5で実装してみましょう。
理由: