예제 #1
0
        private async void RandomButton_Click(object sender, RoutedEventArgs e)
        {
            //总次数倒数之和
            double TotalCount = 0;
            double random     = 0;

            //概率模型
            double[] pro = new double[ViewModel.countitems.Count];
            for (int i = 0; i < ViewModel.countitems.Count; i++)
            {
                double a = 1.0 / (double)ViewModel.countitems[i].count;
                TotalCount += a;
            }
            for (int i = 0; i < ViewModel.countitems.Count; i++)
            {
                double a = 1.0 / (double)ViewModel.countitems[i].count;
                if (i == 0)
                {
                    pro[i] = a / TotalCount;
                }
                else
                {
                    pro[i] = a / TotalCount + pro[i - 1];
                }
            }
            Random ro = new Random();

            random = ro.NextDouble();
            int no = 0;

            for (int i = 0; i < ViewModel.countitems.Count; i++)
            {
                if (random < pro[i])
                {
                    no = i;
                    break;
                }
            }
            while (ViewModel.state[no] == false)
            {
                ro     = new Random();
                random = ro.NextDouble();
                no     = 0;
                for (int i = 0; i < ViewModel.countitems.Count; i++)
                {
                    if (random < pro[i])
                    {
                        no = i;
                        for (int j = 0; i < ViewModel.state.Length; i++)
                        {
                            ViewModel.state[i] = false;
                        }
                        break;
                    }
                }
            }
            this.pict.Source = new BitmapImage(ViewModel.memberitems[no].pic);
            //(pict.Source as BitmapImage).UriSource = ViewModel.memberitems[no].pic;
            DateTime date   = DateTime.Now;
            string   note   = Note.Text;
            var      result = await HttpUtil.GetMemberNames(App.account); //狗哥把这段改为直接从mem_List拿名字

            string   name = (string)result["names"][no];
            DutyItem D    = new DutyItem(no, name, date, note);

            ViewModel.dutyitems.Add(D);

            await HttpUtil.AddDuty(App.account, no, D);
        }