0
点赞
收藏
分享

微信扫一扫

蓄水池抽样

三维控件研究 2022-01-16 阅读 77

假设有n个数,要保证每一个被抽到的概率为1/n,可以采用

算法结论:到第i个数的时候,以1/i的概率保留,1-1/i保留原来的数。

具体做法 leetcode382

class Solution {
public:
ListNode* q;
Solution(ListNode* head) {
q=head;
}

int getRandom() {
ListNode* p=q;
int i=1,ans=0;
while(p)//循环条件
{
if(rand()%i==0)//1/i的概率
ans=p->val; //选取当前值
p=p->next; //往下判断
i++;
}
return ans;
}

};
举报

相关推荐

0 条评论