等概率不重复的生成随机数应该是在平时开发中常见的,也是面试中常问的基础之一。有多种实现方式,有人人都可以想到的,也有不容易想到的巧妙算法,那么当有人问你哪个实现方式更好的时候你该怎么回答呢?回答巧妙的算法比普通算法好?答案显而易见,首先要搞清楚应用场景和要解决的问题。这样才能判断一个算法或者方案的合适与否。
接下来明确问题、提出多个解决方法,最后对比每个方法的优劣与使用场景。
要求:
可能有些具体的场景和问题需求都不一样,可以统一:在一定范围内等概率不重复的生成有限个随机数。具体的可以定义为,在[m,n]之间等概率的生成k个不相同的随机数。
设计与实现:
延伸阅读
学习是年轻人改变自己的最好方式