网页设计软件h/免费seo关键词优化服务
之前在NI校园招聘被问到洗牌问题
现在仔细想想:
为了实现产生随机的不重复1-54序列。这个问题要做极致的时空优化,也算是有点讲究了。
大概算起来有几个思路:
0:每次产生一个1-54随机数,标记在54元素的数组里,如果重复则重新产生。
1:每次产生一个1-54随机数,标记在54元素的数组里,如果重复则后推一个。
2:第1次产生一个1-54随机数,将其与第1个数组元素交换。
第2次产生一个2-54随机数,将其与第2个数组元素交换。
第3次产生一个3-54随机数,将其与第3个数组元素交换。
3:牌一共有54!种,随机产生一个54!的随机数,用康拓展开式转化为对应的牌组。
4:将1-54的递增序列,用若干次的随机打乱。
不知道有没有更厉害的方法,欢迎大侠来拍砖。