思想:
1.首先生成1到n的数组A
2.生成1到n^3的n个数的随机数组P
例如A=<1,2,3,4> P=<36,3,62,19>
3.对p数组进行从小到大的排序(利用快速排序),生成数组P1=<3,19,36,62>
4.根据3中P1的顺序,生成随机数数组A1=<2,4,1,3>
应用:腾讯面试题目
对于一个斗地主游戏,给出一个发牌的算法,让每个人的牌确保随机。
考虑假设有N张牌,要分出来M张牌,给K个人。我能想到的是,N张牌有N种排列,随机产生一种排列,将产生排列的前M张牌依次分给K个人。使用均匀随机排列算法,能够保证:对于N张牌的N!种排列,且得到的任意一种排列的概率都是相同的,即都为1/(N!)。
代