問題タブ [probability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
147 参照

python - リストから一度に 2 つのランダムな要素に対してループを実行するにはどうすればよいですか?

Python に複数の文字列を含むリストがあるとします。サイズはわかりません。この文字列の 2 つのランダムな要素に対して操作を行うループを実行するにはどうすればよいですか?

このランダム化で文字列の特定のサブセットを優先し、より頻繁に選択されるようにしたいが、それらが選択されないようにしたい場合はどうすればよいでしょうか?

0 投票する
3 に答える
8799 参照

statistics - 2 つのエラー値の差が大きいかどうかの判断

私は、イベントが発生する確率を予測することを仕事とするさまざまなアルゴリズムを評価しています。

大規模なデータセットでアルゴリズムをテストしています。((誤差の合計) の二乗) の平方根である「二乗平均平方根誤差」を使用して、それらの有効性を測定します。エラーは、予測された確率 (0 と 1 の間の浮動小数点値) と実際の結果 (0.0 または 1.0) の差です。

だから私はRMSEと、アルゴリズムがテストされたサンプルの数を知っています.

問題は、RMSE 値が互いに非常に近い場合があることです。これらの値の差が単なる偶然なのか、それとも実際のパフォーマンスの差なのかを判断する方法が必要です。

理想的には、特定の RMSE 値のペアについて、一方が他方よりも優れている確率を知りたいので、この確率を有意性のしきい値として使用できます。

0 投票する
6 に答える
10685 参照

java - 合計が1になるN個の数値を生成する

サイズの配列が与えられた場合、n各インデックスに対してランダムな確率を生成したいと思います。Sigma(a[0]..a[n-1])=1

考えられる結果の1つは次のとおりです。

別の完全に合法的な結果は次のようになります。

これらを簡単かつ迅速に生成するにはどうすればよいですか?どの言語でも答えは問題ありません。Javaをお勧めします。

0 投票する
5 に答える
1034 参照

language-agnostic - 確率論とプロジェクト計画

大まかな要件と仕様に従って、見積もりが必要なプロジェクトを管理しています。そのため、特定の機能とタスクの推定は、1 つの離散値ではなく、離散値のセットになります (たとえば、正確に 17 ではなく、10 から 20 の間)。

好奇心が強いのですが、あるタスクを最低見積もり内で完了するおおよその確率を知りたい場合、どのようにアプローチすればよいでしょうか? 議論のために、私の見積もりスキル、使用されたプラットフォームなどの要因を無視してください.

提案された各値の確率がまれなイベント/正規分布の法則に従うと仮定して、λ = (低 + 高) / 2 のポアソン分布を使用することを考えていました。これは、私の推定限界を超える可能性が低いという事実を説明していませんが、それでも...

それについてどう思いますか?また、そのような実験にはどのアプローチを選択しますか?

0 投票する
1 に答える
2144 参照

python - numpy でジョイント pmfs から条件付き確率を計算すると、遅すぎます。アイデア?(python-numpy)

たとえば、(1,2,3,4,5,6) のような形状の結合確率質量関数配列があり、いくつかの次元の値を条件として確率テーブルを計算したい (cpt をエクスポートする) 、意思決定の目的で。

現時点で思いついたコードは次のとおりです(入力は {'variable_1': value_1, 'variable_2': value_2 ... } の形式の辞書「vdict」です)

...

だから、私が現在していることは次のとおりです。

  1. 変数をcptの対応する次元に変換します。
  2. 0 番目の軸を前に見つけた軸と入れ替えます。
  3. 0軸全体を目的の値に置き換えます。

寸法を元の軸に戻します。

さて、問題は、ステップ 2 を実行するために、(a.) サブ配列を計算し、(b.) それをリストに入れて再び配列に変換する必要があるため、新しい配列が得られることです。

つまり、太字のものは、古いオブジェクトへの参照だけを使用する代わりに、新しいオブジェクトを作成することを意味します。これは、d が非常に大きく (これは私に起こります)、d を使用するメソッドが何度も呼び出される場合です (これもまた、 、私に起こります)結果全体が非常に遅いです。

では、この小さなコードを改良してより高速に実行できるアイデアを思いついた人はいますか? たぶん、その場で条件を計算できるようになるでしょう。

注:元の軸の順序を維持する必要があります(または、少なくとも、軸が削除されたときに変数をディメンション辞書に更新する方法を確認してください)。カスタムdtypeに頼りたくありません。

0 投票する
1 に答える
819 参照

c++ - 信頼に比例する確率でノードを選択する

アイテムの選択に関連するアルゴリズムまたはデータ構造を知っている人はいますか?それらが選択される確率は、付加価値に比例しますか? つまり: http://en.wikipedia.org/wiki/Sampling_%28statistics%29#Probability_proportional_to_size_sampling

ここでのコンテキストは、分散型の評判システムであり、付加価値は、あるユーザーが別のユーザーに対して持っている信頼の価値です。このシステムでは、すべてのノードは、完全に信頼できる友人として開始するか、完全に信頼できない未知のものとして開始します。これは、大規模な P2P ネットワークでは役に立ちません。なぜなら、友達よりも多くのノードが存在し、直接の友達ではないユーザーの大規模なグループの中で誰を信頼するかを知る必要があるためです。未知の人が友人の友人関係を通じて信頼を得ることができる動的な信頼システム。

時々、各ユーザーは (速度と帯域幅のために) 固定数のターゲット ノードを選択し、別の選択された固定数の中間ノードがそれらをどれだけ信頼しているかに基づいて信頼を再計算します。再計算のためにターゲット ノードを選択する確率は、その現在の信頼度に反比例するため、未知数がよりよく知られるようになる可能性が高くなります。中間ノードは、中間ノードが選択される確率がその現在の信頼に比例することを除いて、同じ方法で選択されます。

私は自分で簡単な解決策を書きましたが、かなり遅いので、この側面を処理する C++ ライブラリを見つけたいと思っています。もちろん、私は自分で検索を行い、現在掘り下げている TRSL を見つけることができました。これはかなり単純で、おそらくよくある問題のように思えるので、これに使用できる C++ ライブラリがもっとたくさんあると思うので、ここの誰かがこれに光を当てることができることを期待してこの質問をしています.

0 投票する
1 に答える
564 参照

algorithm - Miller-Rabin 方式の実装で予測できない出力

私はSchemeが初めてです。PLTスキームを使用して、ラビンミラーアルゴリズムの確率的バリアントを試して実装しました。私はそれが確率的であることを知っていますが、ほとんどの場合、間違った結果を得ています。私は C を使用して同じことを実装しましたが、うまくいきました (試行に失敗したことはありません)。デバッグ中に期待どおりの出力が得られますが、実行すると、ほとんどの場合、間違った結果が返されます。Wikipediaのアルゴリズムを使用しました。

また、Scheme で正しい方法でプログラミングしていますか? (私が使用するループ部分の抜け出しについてはよくわかりませんcall/cc。あるサイトで見つけて以来、それを使用しています。)

前もって感謝します。

0 投票する
3 に答える
3286 参照

math - ノックアウトトーナメント-可能な組み合わせの数

ノックアウト方式のトーナメントに参加する8人の組み合わせの数はいくつですか?プレイされた試合の総数は7になりますが、このセットで可能な組み合わせの数も必要です

0 投票する
3 に答える
1366 参照

ruby - この修正されたブラックジャックゲームの最適な勝利戦略は何ですか?

質問

可能な限り多くのゲームに勝つために、とどまるのに最適な価値はありますか?もしそうなら、それは何ですか?

編集:対戦相手が何をするかに関係なく、与えられた制限に対して計算できる正確な勝率はありますか?(私は大学以来、確率と統計を行っていません)。それを私のシミュレーション結果と対比するための答えとして見たいと思います。

編集:私のアルゴリズムのバグを修正し、結果テーブルを更新しました。

バックグラウンド

私は、標準のルールからかなり厄介なルールの微調整を加えた修正ブラックジャックゲームをプレイしてきました。標準のブラックジャックのルールとは異なるルールをイタリック体で示し、慣れていない人のためにブラックジャックのルールを含めました。

変更されたブラックジャックルール

  1. 正確に2人の人間のプレーヤー(ディーラーは無関係です)
  2. 各プレイヤーには裏向きに2枚のカードが配られます
    • どちらのプレイヤーも、対戦相手のカードの_any_の値を_決して_知りません。
    • どちらのプレーヤーも、_両方_がハンドを終了するまで、対戦相手のハンドの価値を知りません。
  3. 目標は、可能な限り21のスコアに近づくことです。結果:
    • プレーヤーのAとBのスコアが同じである場合、ゲームは引き分けです
    • プレーヤーのAとBの両方のスコアが21(バスト)を超えている場合、ゲームは引き分けです
    • プレーヤーAのスコアが21未満で、プレーヤーBがバストした場合、プレーヤーAが勝ちます
    • プレーヤーAのスコアがプレーヤーBのスコアよりも大きく、どちらもバストしていない場合、プレーヤーAが勝ちます
    • それ以外の場合、プレーヤーAは負けました(Bが勝ちました)。
  4. カードの価値は次のとおりです。
    • カード2から10は、対応するポイント数の価値があります
    • カードJ、Q、Kは10ポイントの価値があります
    • カードエースは1または11ポイントの価値があります
  5. 各プレイヤーは、次の状態になるまで、一度に1枚ずつ追加のカードを要求できます。
    • プレイヤーはこれ以上欲しくない(滞在)
    • エースを1としてカウントしたプレーヤーのスコアは、21(バスト)を超えています。
    • どちらのプレイヤーも、相手がいつでも何枚のカードを使用したかを知りません。
  6. 両方のプレイヤーが滞在またはバストした後、勝者は上記のルール3に従って決定されます。
  7. 各ハンドの後、デッキ全体が再シャッフルされ、52枚のカードすべてが再び場に出ます。

トランプとは何ですか?

カードのデッキは52枚のカードで構成され、次の13個の値がそれぞれ4枚ずつあります。

2、3、4、5、6、7、8、9、10、J、Q、K、A

カードの他のプロパティは関係ありません。

これのRuby表現は次のとおりです。

アルゴリズム

私はこれに次のように取り組んできました:

  • スコアが2から11の場合、バストすることは不可能なので、常にヒットしたいと思います。
  • スコア12から21のそれぞれについて、対戦相手に対してNハンドをシミュレートします
    • これらのNハンドの場合、スコアは私の「限界」になります。限界以上になったら留まります。
    • 私の対戦相手はまったく同じ戦略に従います
    • セットの順列ごとにN個の手をシミュレートします(12..21)、(12..21)
  • 各順列の勝ち負けの差と正味の勝ち負けの差を印刷します

Rubyに実装されているアルゴリズムは次のとおりです。

使用法

スクリプトのデフォルトは、100,000回の反復と4つのデッキです。高速なMacBookProでは100,000分で約5分かかります。

出力(N = 100 000)

解釈

これは私が苦労しているところです。このデータの解釈方法がよくわかりません。一見、常に16か17にとどまるのが道のように思えますが、それが簡単かどうかはわかりません。実際の人間の対戦相手が12、13、場合によっては14に留まる可能性は低いと思うので、それらのopponent_limit値を破棄する必要がありますか?また、実際の人間の対戦相手の変動を考慮に入れるためにこれをどのように変更できますか?たとえば、実際の人間は、「感情」に基づいて15に留まる可能性が高く、「感情」に基づいて18にヒットする可能性もあります。