0

Autopocoを使用してプロジェクトのテスト/シードデータを生成しています。

各会議の対象には、1年の期間にわたってランダムな日付(DefaultRandomDateSource)が割り当てられます。また、会議オブジェクトには、事前定義されたリスト(MeetingTitleSource)からランダムなタイトルが割り当てられます。

私が得ている問題は、会議のタイトルがランダムな時間順序で適用されていないことです。つまり、最初の2週間はすべて「パフォーマンス会議」で、次の2週間はすべて「デザイン会議」などです。会議のタイトルを完全にランダムに割り当てたいと思います。

誰か助けてもらえますか?

これがシードデータを作成する私のコードです

//Configure the default properties
        var meetings = AutoPocoContainer.Configure(x =>
        {
            x.Conventions(c => { c.UseDefaultConventions(); });
            x.Include<Meeting>()

                .Setup(c => c.StartDate).Use<DefaultRandomDateSource>
                (DateTime.Parse("21/Mar/2013"),
                 DateTime.Parse("21/Mar/2012"))
                .Setup(c => c.EndDate).Use<MeetingEndDateSource>(0, 8)
                .Setup(c => c.Title).Use<MeetingTitleSource>()

        });

        _meetings = meetings.CreateSession().List<Meeting>(MeetingRecords).Get();

これがデフォルトの日付ソースです

 public class DefaultRandomDateSource : DatasourceBase<DateTime>
{
    private DateTime _MaxDate { get; set; }
    private DateTime _MinDate { get; set; }
    private Random _random = new Random(1337);



    public DefaultRandomDateSource(DateTime MaxDate, DateTime MinDate)
    {
        _MaxDate = MaxDate;
        _MinDate = MinDate;
    }

    public override DateTime Next(IGenerationContext context)
    {
        var tspan = _MaxDate - _MinDate;

        var rndSpan = new TimeSpan(0, _random.Next(0, (int)tspan.TotalMinutes), 0);


        return _MinDate + rndSpan;
    }
}

これがMeetingTitleのソースです

    public class MeetingTitleSource : DatasourceBase<string>
{
    private Random mRandom = new Random(1337);

    public override string Next(IGenerationContext context)
    {

        return MeetingNames[mRandom.Next(0, MeetingNames.Length)];
    }

    private static string[] MeetingNames = new String[]{
        "Design meeting",   
        "Strategy Meeting", 
        "Performance review",   
        "Appraisal",
        "Disciplinary",
        "Project review",
        "Client Meetings",
        "Budget Meeting",
        "Financial Update",
        "CompStat",
        "Project Update"                     
    };
}
4

1 に答える 1

1

同じシードを使用しているため、毎回同じ値のシーケンスが生成されます。

システムクロックからのナノ秒の値は、シードとしてよく使用されます。試してみることをお勧めします。

于 2012-04-23T17:45:26.123 に答える