第一题:
幸运抽奖
关键字
可测试代码,测试oracle, mock techinque
应用的设计模式
策略模式
描述
每年的年夜饭都有抽奖环节。设计一个程序来挑选幸运的人!
要求
编写一个抽奖程序,其输入的总人数和奖金配置(多少第一,第二,…,并输出每个奖项的得奖者名单
员工人数>=奖品数量
任何员工最多可以获得1个奖励
您必须编写测试来证明您的代码是正确的,并且您的实现可以保证公平性
正确性:您的代码按预期工作
公平:每个员工都有相同的机会获得相同的奖励(可以使用统计技术)
样本
输入:
员工总数:100人(员工索引从0到99)
奖品配置:[1,2,3](表示我们将有1个一等奖,2个二等奖,3个三等奖)
输出:
[[50],[23,34],[20,81,79]](表示第50名员工获得第一名,第23名和第34名员工获得第二名,以此类推)
提示
为了证明正确性,你需要确保所有的要求都得到满足,比如任何员工最多只能得到一个奖,等等
为了证明公平性,您可以使用相同的输入多次运行您的程序,并检查每个员工获得相同奖励的时间是否已关闭。
这是一个开放的问题,所以任何其他的想法都是受欢迎的。
幸运抽奖
关键字
可测试代码,测试oracle, mock techinque
应用的设计模式
策略模式
描述
每年的年夜饭都有抽奖环节。设计一个程序来挑选幸运的人!
要求
编写一个抽奖程序,其输入的总人数和奖金配置(多少第一,第二,…,并输出每个奖项的得奖者名单
员工人数>=奖品数量
任何员工最多可以获得1个奖励
您必须编写测试来证明您的代码是正确的,并且您的实现可以保证公平性
正确性:您的代码按预期工作
公平:每个员工都有相同的机会获得相同的奖励(可以使用统计技术)
样本
输入:
员工总数:100人(员工索引从0到99)
奖品配置:[1,2,3](表示我们将有1个一等奖,2个二等奖,3个三等奖)
输出:
[[50],[23,34],[20,81,79]](表示第50名员工获得第一名,第23名和第34名员工获得第二名,以此类推)
提示
为了证明正确性,你需要确保所有的要求都得到满足,比如任何员工最多只能得到一个奖,等等
为了证明公平性,您可以使用相同的输入多次运行您的程序,并检查每个员工获得相同奖励的时间是否已关闭。
这是一个开放的问题,所以任何其他的想法都是受欢迎的。









