GoCalf Blog 1/100 Algo&Math; 1/100 IT&Game; 1/100 Info&Sharing; 1/100 Personal&Other.

8十/110

利用不均匀硬币产生等概率

作者: Calf

unbalanced_coin
Part 7 of 15 in the series 常见面试算法题

问题描述:有一枚不均匀的硬币,已知抛出此硬币后,正面向上的概率为p(0 < p < 1)。请利用这枚硬币产生出概率相等的两个事件。

这个问题跟之前的利用等概率Rand5产生等概率Rand3非常像,但却简单的多。几个月前还为这个事情头疼了一下,现在想来真是不应该。

26九/1111

单次遍历,带权随机选取问题(二)

作者: Calf

colorpicker_weight_2
Part 6 of 15 in the series 常见面试算法题

还是同样的问题:有一组数量未知的数据,每个元素有非负权重。要求只遍历一次,随机选取其中的一个元素,任何一个元素被选到的概率与其权重成正比。

前一篇文章中介绍了概率分布的理论值,并用比较简洁高效的函数实现了选取一个元素的方法。现在来看一个神奇的算法,以及相关的证明和实现。

21九/110

单次遍历,带权随机选取问题(一)

作者: Calf

colorpicker_weight
Part 5 of 15 in the series 常见面试算法题

单次遍历,等概率随机选取问题中已经剧透了今天的内容,那就是带权随机选取(Weighted Random Sample)问题。

问题描述:有一组数量未知的数据,每个元素有非负权重。要求只遍历一次,随机选取其中的一个元素,任何一个元素被选到的概率与其权重成正比。

6九/115

单次遍历,等概率随机选取问题

作者: Calf

colorpicker
Part 4 of 15 in the series 常见面试算法题

又是一道概率问题,不过跟之前的题目一样,这也是一道非常简单的题目。

问题描述:假设我们有一堆数据(可能在一个链表里,也可能在文件里),数量未知。要求只遍历一次这些数据,随机选取其中的一个元素,任何一个元素被选到的概率相等。O(n)时间,O(1)辅助空间(n是数据总数,但事先不知道)。

1九/110

等概率随机排列数组(洗牌算法)

作者: Calf

cards_shuffle
Part 3 of 15 in the series 常见面试算法题

又是一道跟概率相关的简单问题。话说我的概率学的太差了,趁这个机会也从头开始补习一下。

问题描述:假设有一个数组,包含n个元素。现在要重新排列这些元素,要求每个元素被放到任何一个位置的概率都相等(即1/n),并且直接在数组上重排(in place),不要生成新的数组。用 O(n) 时间、O(1) 辅助空间。

2八/113

利用等概率Rand5产生等概率Rand3

作者: Calf

dice_5
Part 1 of 15 in the series 常见面试算法题

问题本身很明确,但不知道起个什么题目好,姑且先这么说吧。

问题描述:现在有一个叫做Rand5的函数,可以生成等概率的[0, 5)范围内的随机整数,要求利用此函数写一个Rand3函数(除此之外,不能再使用任何能产生随机数的函数或数据源),生成等概率的[0, 3)范围内的随机整数。