/// <summary> /// くじを引き、結果としてランクを取得します /// </summary> /// <returns>ランク</returns> public static Primitive CastLots() { var lots = _Lottery.Where(x => !x.Cast).ToList(); if (lots.Count > 0) { _LastCast = lots[rnd.Next(0, lots.Count - 1)]; _LastCast.Cast = true; return(_LastCast.Rank); } else { return(-1); } }
/// <summary> /// くじを生成する /// ランク配列は、ランクと枚数を指定します /// rank[1] = 1 : 一等(値は本数) /// rank[2] = 2 : 二等(値は本数) /// : /// </summary> /// <param name="rankCounts">ランク配列</param> public static void CreateLots( Primitive rankCounts ) { // くじをクリアする _Lottery.Clear(); _LastCast = null; // くじを生成する var no = 1; for (int rank = 1; rank <= rankCounts.GetItemCount(); rank++) { for (int i = 0; i < (int)rankCounts[rank]; i++) { _Lottery.Add(new Lots { No = no++, Rank = rank, Cast = false }); } } }