質問

同時呼び出しがseg-vを引き起こさないか、同じ値を返さない限り、 PRNG エラーの主な影響が予測不可能な結果であり、それがPRNGのポイントである場合


編集:競合状態やデータ破損の影響を受けないPRNGはありますか?

役に立ちましたか?

解決

PRNGは細心の注意を払って構築されたツールです。率直に言って、競合状態とスレッド化バグが良いPRNGである場合、実装はそのように記述されます。

ランダム性を高めるためにスレッドバグを追加する際の問題は、ジェネレーターに対する未検討の変更であるということです。既存の安全なアルゴリズムと実装は徹底的にテストされています。安全でない亜種を試してみたい場合は、少なくとも通常のPRNGと同じくらいランダムであることを示すために統計的なうなり声の作業を行う必要があります。

他のヒント

  

これらのエラーの主な影響が予測不可能な結果であり、それがPRNGのポイントである場合

"ランダム"予測不可能とは異なります-ランダムは、実際の乱数が必要な場合に維持することが非常に重要な特定の分布を意味します。乱数が何らかの方法で予測可能な場合、セキュリティ上の問題、または少なくともプログラムのバグである可能性があります

それは一般にそれらを決定性を少なくし(多くの人が行う決定性に依存している場合は悪い)、特定の実装の詳細とハードウェアの微妙さに応じて、疑似ランダムを少なくするかしないかもしれません振る舞います。

しかし、通常、マルチスレッドアプリを作成する人は、PRNG状態をTLS(thread-local-storage)で宣言します。この方法は問題ではなく、すべてのスレッドに独自のPRNGがあり、意図的に作成しない限り、レースは発生しません。とにかくPRNGコード内ではありません。これはロックフリーで、多かれ少なかれ完全なパフォーマンスです(使用するTLS実装に依存します)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top