예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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
                    });
                }
            }
        }