没有合适的资源?快使用搜索试试~ 我知道了~
EatApples#kaleidoscope#蓄水池抽样1
需积分: 0 0 下载量 15 浏览量
2022-07-25
14:19:05
上传
评论
收藏 3KB MD 举报
温馨提示
试读
(1)维护一个大小为 M 的数组. 记当前接收的是第 N 个数据(这里从 1 开始,代码中从 0 开始) (2)如果 N<=M, 直接插入(对于前 M 个元素,
资源推荐
资源详情
资源评论
### 蓄水池抽样
### 1. 单机
(1)维护一个大小为 M 的数组. 记当前接收的是第 N 个数据(这里从 1 开始,代码中从 0 开始)
(2)如果 N<=M, 直接插入(对于前 M 个元素,全部留下)
(3)如果 N>M, 就取一个 1~N 之间的随机数 index。 如果 index 在 1~M 之间, 则用新接收的数据替换第 index 个数据; 否则丢弃
```java
for(int i = 0; i < M; ++i)
R[i] = L[i];
for(int i = M; i < N; ++i) {
// 该函数返回区间为[0,n),不包括右边界,故需要增1
j = rand.nextInt(i+1);
if(j < M)
R[j] = L[i];
}
return R;
```
### 证明
(1)假设当前是第 M+1 个元素, 它被丢弃的概率是 1/(M+1), 留下的概率就是 M/(M+1). 对于已经在集合中的 M 个
点击阅读更多
资源评论
艾闻
- 粉丝: 31
- 资源: 302
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功