C# 随机选中复选框中的项目

C# 随机选中复选框中的项目,c#,C#,我有一个checklist框,我想随机检查文本框(CheckAmount.Text)中的一组项目-即,如果用户输入60%(0.60),我想检查选中列表框中60%的项目。这是可能的还是很接近 int CA = Convert.ToInt32(CheckAmount.Text); for (int i = 0; i <= CA; i++) { } intca=Convert.ToInt32(CheckAmount.Text); 对于(int i=0;i我可以接近,但你要说的是: 勾选复选框

我有一个checklist框,我想随机检查文本框(CheckAmount.Text)中的一组项目-即,如果用户输入60%(0.60),我想检查选中列表框中60%的项目。这是可能的还是很接近

int CA = Convert.ToInt32(CheckAmount.Text);
for (int i = 0; i <= CA; i++)
{

}
intca=Convert.ToInt32(CheckAmount.Text);

对于(int i=0;i我可以接近,但你要说的是:

勾选复选框列表foo中的复选框数量

代码:

它所做的是检查所有的复选框,并从复选框中随机选择blah复选框并进行检查。blah是代码中的CA

希望有帮助


Techcraft7

如果要精确检查60%的行(或舍入误差允许的最接近值),应随机排序行,然后取前60%的行

例如:

var r = new Random();
var checkboxes = this.Controls.OfType<CheckBox>();
float totalBoxes = checkboxes.Count();
var targetCount = (int)(totalBoxes * 0.60F);

var targetItems = checkboxes
    .OrderBy( c => r.Next() )  //Sort randomly
    .TakeWhile( (c,i) => i <= targetCount );  //take the first 60%
foreach (var c in targetItems) c.Checked = true;
var r=new Random();
var checkbox=this.Controls.OfType();
float totalbox=复选框。Count();
var targetCount=(整数)(TotalBox*0.60F);
var targetItems=复选框
.OrderBy(c=>r.Next())//随机排序

.TakeWhile((c,i)=>我可能的精确复制将取决于复选框的数量以及模数除法是否允许这种精度,例如,如果您有11个复选框,您可以选中6或7,但不能选中6.6。因此您需要相应地调整算法。谢谢。这很有效!!但它不会选中只突出显示的项目谢谢你-我对你的一些代码有点困惑-你能用我的文本框/复选框名称注释我编辑的内容吗?我对c和i特别不确定
var r = new Random();
var checkboxes = this.Controls.OfType<CheckBox>();
float totalBoxes = checkboxes.Count();
var targetCount = (int)(totalBoxes * 0.60F);

var targetItems = checkboxes
    .OrderBy( c => r.Next() )  //Sort randomly
    .TakeWhile( (c,i) => i <= targetCount );  //take the first 60%
foreach (var c in targetItems) c.Checked = true;