1

C++ プログラムを C# に移植する必要があります。

プログラムには乱数が含まれています。テストで同じ結果を得るには、両方のプログラムでまったく同じ乱数を生成する必要があります。

C ++で私が使用する

srand(1000)
...
double r = (double)rand() / (double)(RAND_MAX);

そしてC#で私は使用します

private readonly Random _rnd = new Random(1000);
...
_rnd.NextDouble()

ただし、プログラムは同じシードでも異なる数値を生成します。同じ乱数を生成する方法はありますか?

4

3 に答える 3

2

c++ rand と c# Random クラスに使用されるアルゴリズムを知っていますか?

PNGを自分で実装してみることができます。例えば。LCGアルゴリズムは非常にシンプルで、両方の言語で簡単に実装できます...wiki ページからいくつかの共通パラメーターを使用するだけです。

于 2013-12-22T13:03:31.000 に答える
1

基本的に両方の乱数関数 (srand と Random) の基本的な実装は異なるため、それらが同じ出力を与えることに依存することはできません。それでは、「n」個の数値のセットを提供し、それらを c++ と c# の両方でアルゴリズムに入力してみませんか? もちろん、テスト目的のためだけですか? こうすることで、常に同じ金額、同じ数字、同じ注文を確実に行うことができます。

例:すべての行にいくつかの数値を含むファイルをc ++ / c#の両方で読み取り、それらの数値を「テスト」しようとしているアルゴリズムに入力します。

(また、ここでテストしたいのは何ですか?あなたが書いたアルゴリズム(このように移植されたアルゴリズム)、または両方の言語の「ランダム」機能ですか?上記の私の質問に対するあなたの答えに応じて、あなたのケースに関連する内容は大きく異なる可能性があります! では、もう少し背景を説明していただけますか?)

于 2013-12-22T12:56:30.603 に答える