vb 6.0の乱数が生成されますが、アプリケーションを終了してもう一度やり直すと、乱数生成の順序はドットネットと同じではなく、乱数生成が完璧です!どのように可能ですか?それの背後にある論理は何ですか?乱数生成の背後にある基本的な論理は何ですか?
答えて
ランダムジェネレータは、基本的に決定的な関数であり、ある数値から別の数値になります。特定の値から開始すると、常に同じ結果が得られます。ランダムジェネレータへの最初の入力は、現在の時間から生成されます(これはシードと呼ばれます)。 .NETはデフォルトとしてvb 6.0を使用しているとは限りません。 J.フォンノイマン
から
引用は、乱数を生成する演算方法を考慮いずれも罪の状態では、当然のことながら、です。
ドットネットRandom
では、クラスは現在のシステム時刻をシードとして使用します。 vb 6.0は常に同じシードを使用しているようです。
本当に乱数を提供することは、常にコンピュータサイエンスにおいて最も難しい課題の1つです。問題は解決されません。 .NETで乱数生成は決して「完全」ではないことを保証できます。 VB6よりも優れたノッチです。
Redgate Reflector revelas .NETでは、クラスRandom()のデフォルトのコンストラクタは、デフォルトのシード(前回のブートからのミリ秒)としてEnvironment.TickCountを提供します。 VB6にはおそらくデフォルト値としての定数があります。
最初の声明に同意できません。様々なエントロピー源に基づいて任意の強さの乱数を提供することは、深く研究され、完全に解決された問題であり、何十年も前からそうであった。決定された攻撃者に脆弱ではないような実装を作成することは技術的な課題ですが、それはエンジニアリングの問題であり、コンピュータサイエンスの問題ではありません。Randomクラスで提供されているような疑似乱数ジェネレータはもちろん無作為ではありません。真の乱数生成の問題を解決しようとすることさえありません。 –
私は
Random r = new Random(Environment.TickCount);
としてその同じ新しいランダムクラスをインスタンス化する際に、この番号は、VB6で
これは、Reflectorを開いて、Randomのデフォルトのコンストラクタを見ると、基本的に見えます。 public Random():this(Environment.TickCount){} –
異なっているなぜ、人は通常
を呼び出していることを数日前に言われました毎回異なる順序の番号を取得するために、Randomize Timer
- 1. このプログラムの背後にある論理は何ですか?
- 2. scikit-learnのextract_patches関数の背後にある理論/アルゴリズムは何ですか?
- 3. arr1 [i ++] = arr2 [j ++]の背後にある論理は何ですか?
- 4. Ruby Rails 2.3.xページネーションの背後にある理論は何ですか?
- 5. KMPパターンマッチングアルゴリズムの背景にある理論は何ですか?
- 6. フルテキストノイズワード - 論理の背後に
- 7. C#の基本ブール論理
- 8. 複雑な線の背後にある論理
- 9. 基本的なOCR後処理(スペルチェック)
- 10. テンプレートメソッドの背後にある論理を理解したい
- 11. Boost :: Spirit:基本的な論理と表現の構文解析
- 12. ランド()と同じ数のプログラムは、乱数発生関わるこのかなり基本的なC++コードスニペットで
- 13. StatelessWidgetの背後にある理由は何ですか?
- 14. 'BanTransitiveDependencies failed'の背後にある理由は何ですか?
- 15. SciKit-Learn:基本的なPCAの混乱
- 16. 基本的なスレッド、インターリーブスレッドの混乱?
- 17. Windowsアプリケーションで発生する基本的なパフォーマンスの問題は何ですか?
- 18. 幾何乱数の生成
- 19. 本当に乱数生成器
- 20. Robot()の背後にある技術的、根本的な理由は何ですか?createScreenCapture()はとても遅いですか?
- 21. 基本C++の後には何がありますか?
- 22. ソースコントロールの背後にある理論(および用語)
- 23. 量子鍵:これの背後にある論理?
- 24. 関連するコンテンツクエリの基本的なアルゴリズムは何ですか?
- 25. カラーホイールの背後にある数学は何ですか?
- 26. CSSフィルターの背後にある数学は何ですか?
- 27. この乱数生成器には何がありません
- 28. 基本的なデータフレームで簡単な基本棒グラフを作成するには?
- 29. ワカンダ - 基本的な理解
- 30. ボタンのインスタンスの作成と、プレーンなクラスのインスタンスの作成の背後にある論理?
関連のないコメントとして、必要なときに常に新しい「ランダム」をインスタンス化しないでください。あなたのアプリケーション全体に静的なものを宣言してください。これはより効率的であるばかりでなく、よりランダムでもあります。タイトなループの中で新しい「ランダム」をインスタンス化するときに問題に遭遇しました。 – Timwi
@ティムウィィ:あなたが必要とするたびに新しい「ランダム」を発射しないことについての良いアドバイスですが、アプリ全体に静的な「ランダム」を共有することは、それ自体の落とし穴があります。 'Random'クラスはスレッドセーフではありませんので、アプリケーション全体で共有している場合は、何らかの形で(ロックなどで)同期が取られていることを確認するか、' ThreadStatic'/'ThreadLocal 'を使用する必要があります。静的なプレーン。 – LukeH
@LukeH:良い点、ありがとう! – Timwi