私はalgorithm for collapsing rangesについて私の質問で得た様々な答えをテストできると思っていました。だから私は範囲の全体を作成し、さまざまなメソッドがそれをどのように処理するかを見るメソッドを作成する必要があると思っていた。C#:ランダムに均等に分布したランダムな範囲を作成するためのアルゴリズム
ランダムなものを生成することについては、あまり良くありません。
private static IEnumerable<Range<int>> GenerateRanges()
{
var r = new Random();
var n = 10000;
while(--n >= 0)
{
var start = r.Next(10000);
var end = r.Next(10000);
if (end < start)
Swap(ref start, ref end);
yield return Range.Create(start, end);
}
}
これは当然の範囲の多くを作成しますが、私は常にそれらを崩壊した後にのみ、1つの範囲で終わるので、彼らは特に興味深い結果が得られていない:私はこのようなものを作成しました。より興味深い範囲を作成するにはどうすればいいですか?
うまくいっているようです。 whileループで '10000'と書かれている' max'と言うべきでしょうか? 10000から100までの最大値を調整しようとしましたが、10000までの数値が得られました。もし私がそれをmaxに変更した場合、予想どおりに動作しているようですが、何が起こっているのか分かりません:p – Svish
'密度が1で、1000の範囲が必要な場合、すべての範囲は0と2の間でなければなりません。intなので、丸めが発生します。密度を上げ、私のコードを更新して、適切なint計算を得るためにそれを編集します。 – Dykam
浮動小数点数が必要なときは、浮動小数点型にmaxの型を変更し、Range <>の型を必ず捨ててください。 – Dykam