問題タブ [r-promises]

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 投票する
1 に答える
81 参照

r - withr::with_seed と R.utils::withSeed を非同期コードで使用すると、異なる結果が生成されるのはなぜですか?

指定されたシード (常に指定されたシード) を持つ乱数の生成を必要とするアプリを実装できるように、R を使用して非同期プログラミングを学習しようとしています。私はこれを使ってきましたがR.utils::withSeed、それも存在することを知っているwithr::with_seedので、それをチェックしようと思いました.

乱数の生成が難しいことはわかっているので、簡単な例を実行して、物事がどのように機能するかを理解しようとしました。私は欲しい:

  • ...同じシードを使用する場合、常に同じ乱数を取得する
  • ...非同期フレームワークを使用しているかどうかに関係なく、同じシードで同じ乱数を取得するため (したがって、約束の外でコードを実行して同じ答えを得ることができるはずです)

以下のコードでは、乱数を生成する 2 つの関数を定義し、シードをwithr::with_seedまたはで設定しますR.utils::withSeed

  • これら 2 つの関数は、promise の外で実行すると同じ答えが得られます。
  • これら 2 つの関数は、promise 内で実行すると異なる答えを返します。
  • バージョンは、約束のwithr::with_seed内外で同じ答えを出します。
  • バージョンは、約束のR.utils::withSeed内外で異なる答えを出します。

ただし、答えは複数回の実行で一貫しているようです。

私の質問は:なぜですか?これは のバグR.utils::withSeedですか、それとも何か誤解していますか?


コード