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); }