与往常一样,总是感谢帮助/评论的想法,并为我的编程天真表示歉意。
我正在尝试创建一个广泛适用的函数,可用于未来涉及块随机化的研究。patientDataCollection 的每个成员都有一个布尔属性,命名为interventionArm、givenDrugX 或类似的东西。该功能旨在(伪)随机分配给研究组,具体取决于块大小 - 也就是说,如果块大小为 8,则将 4 分配给治疗,将 4 分配给控制(无治疗)。
到目前为止的代码:
public static bool nextAllocation<T>(int blockSize, IEnumerable<T> patientDataCollection, string allocationPropertyName)
{
int remainingAllocations = blockSize - patientDataCollection.Count();
if (remainingAllocations <= 0) throw new Exception("All alocations within block accounted for");
var p = typeof(T).GetProperty(allocationPropertyName);
int remainingInterventions = blockSize/2 - patientDataCollection.Count(c => c.p);
double Pintervention = (double)remainingInterventions / (double)remainingAllocations;
double rdm = new Random().NextDouble();
return (rdm <= Pintervention);
}
这当然是有缺陷的逻辑,因为变量 p 与 linq 语句 PatientDataCollection.Count(c => cp) 中引用的 cp 无关。显然,这个语句只是简单地计算所有具有真值的元素。
ASP 为 4.0。谁能看到如何实现这一目标