这两种,哪种算法更高点,关于面试题

来源:百度知道 编辑:UC知道 时间:2024/05/17 12:57:00
扑克牌洗牌问题
54张牌顺序打乱
第一种
for(int i=0;i<54;i++)
card[i]<->card[随机下标rand()%54] 换
第二种
for(int i=0;i<这里可以洗很多次;i++)
card[随机下标rand()%54]<->card[随机下标rand()%54] 换

我觉得第一种好点,因为每个数都可能换到
可第二个虽然可以洗很多次,但就算洗1000次,保证洗得很好吗?
而且还需要2个临时的随机变量,个人觉得第一个好,可是为什么游戏公司的会先第二个????

我记得在扫雷的程序中,在排出雷的位置时候,就是先把雷放在前面几个位置,在按照第二种方法将其分布均匀!
其实,你是说的这种方法不是很均匀,有可能洗的不好是多虑了,在使i循环1000次时就可以达到要求,当然,时间复杂度不会很大!

我觉得第二种好