我有这个抽样问题。

我有一系列用随机生成的ID标记的输入。我想根据此随机生成的ID随机抽样这些输入的X%。

我认为,如果我对有偏见的采样器没问题,我可以这样做:

(id % 100) < X


但是,如果我不想引入偏见,那我该怎么办?

最佳答案

假设您有无偏整数随机数的来源,则可以简单地删除任何会增加模数偏差的数字。

假设您使用标准随机数,它将返回数字0..RAND_MAX:

bool sample_pct(int x) {
   int max_id = RAND_MAX - RAND_MAX%100 ;
   while ( true ) {
       int id = random() ;
       if ( id >= max_id) continue ;
       return (id%100) < x ;
   } ;
}


如果您有其他随机数源,则需要调整(范围不同)代码以适应值的范围。

关于c - 如何从X%的时间的随机数输入流中进行选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58444048/

10-11 04:25
查看更多