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 条评论