C# 搶紅包生成 抽獎概率,紅包分配

抽獎概率:

   public int PrabalityRandom()
        {
            Random random = new Random();
            int i= Convert.ToInt32(AwardRate);
            if (random.Next(100) < i) //百分之五十的機率中獎
            {
                return 1;//表示中獎
            }
            else
            {
                return 0;//表示不中獎
            }
        }
 

生成紅包:

       private void button2_Click_1(object sender, EventArgs e)
        {

            if (btnOkOut.Text.Equals("開啓紅包"))
            {
                MessageBox.Show("請您先點擊開啓紅包按鈕!","系統提示!");
                return;
            }
            string Probability = cbxProbability.DisplayMember;//中獎概率
            if (txtWinner.Text.Trim() == "")
            {
                MessageBox.Show("人數不能爲空");
                return;
            }
            if (txtWinner.Text.Trim() == "")
            {
                MessageBox.Show("中獎金額");
                return;
            }
            int Winner = Convert.ToInt32(txtWinner.Text);//人數
            int Money = Convert.ToInt32(txtMoney.Text) * 100;//中獎金額
            DataSet ds = DbHelperSQL.Query("SELECT * from Data_RedEnvelopeAward");
            if (ds.Tables[0].Rows.Count != 0)//truncate table Data_RedEnvelopeAward
            {
                DbHelperSQL.ExecuteSql("truncate table Data_RedEnvelopeAward"); //清空紅包分配表
            }
            List<string> list = new List<string>();
            int a = 1000;
            int sum = 0;

            if (radioButton2.Checked)//隨機將額度
            {


                int[] arr = new int[Winner];
                Random rand = new Random(DateTime.Now.Millisecond);
                for (int i = 0; i < Winner - 1; i++)//人數減1
                {
                    arr[i] = rand.Next(Money);
                }

                Array.Sort(arr);
                // split數組中存放的就是最後分成10份的數,
                int[] split = new int[Winner];//人數 
                for (int i = 0; i < Winner; i++)//人數 
                {
                    if (i == 0)
                    {
                        split[i] = arr[i] - 0;
                    }
                    else if (i == Winner - 1)//人數減1
                    {
                        split[i] = Money - arr[i - 1];//錢數
                    }
                    else
                    {
                        split[i] = arr[i] - arr[i - 1];
                    }
                }
                // 這裏可以驗證和是不是1000
                for (int i = 0; i < Winner; i++)//人數 
                {
                    if (i < Winner - 1)//人數減1
                    {
                        Console.Write("{0}+", split[i]);
                    }
                    else
                    {
                        Console.Write("{0}=", split[i]);
                    }
                    sum += split[i];
                    list.Add(string.Format("INSERT INTO Data_RedEnvelopeAward VALUES ({0}, 0)", Convert.ToDouble(split[i] * 0.01)));
                }
                Console.WriteLine(sum);
            }
            if (radioButton1.Checked)//固定獎額度
            {
                int mw = (Money) / Winner;

                for (int i = 0; i < Winner; i++)//人數 
                {
                    Console.Write("{0}+", mw);
                    list.Add(string.Format("INSERT INTO Data_RedEnvelopeAward VALUES ({0}, 0)", Convert.ToDouble(mw * 0.01)));
                    sum += mw;
                }
                Console.WriteLine("=" + sum);
            }
            DbHelperSQL.ExecuteSqlTran(list);

            MessageBox.Show("生成完成");
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章