许久以前,参加校园招聘,在面试时被问到“如何随机地生成n个不超过n且不重复的正整数”。你会怎么做呢?n的值具体是多少并不重要,我们关心的重点是如何在n确定时设计一种法案来解决随机产生不重复的数的问题。下面就以n =100为例来说明几种实现方式,将产生的随机数存放于数组中。
方案1.
话说当时见识少,功夫不到家,认为每次随机生成数字,再判断该数字是否已经重复,如果不重复则保留该值,否则重新产生新的随机数字。
本文探讨了在面试中遇到的问题——如何随机生成n个不超过n且不重复的正整数。通过分析三种不同的实现方案,从低效的重复判断到更优的数组打乱顺序,再到更巧妙的基于下标的交换方法,揭示了优化随机数生成的思路。最后提到了编程珠玑中的新解法,进一步减少了随机性的需求。
许久以前,参加校园招聘,在面试时被问到“如何随机地生成n个不超过n且不重复的正整数”。你会怎么做呢?n的值具体是多少并不重要,我们关心的重点是如何在n确定时设计一种法案来解决随机产生不重复的数的问题。下面就以n =100为例来说明几种实现方式,将产生的随机数存放于数组中。
方案1.
话说当时见识少,功夫不到家,认为每次随机生成数字,再判断该数字是否已经重复,如果不重复则保留该值,否则重新产生新的随机数字。
1614
1537
921

被折叠的 条评论
为什么被折叠?