本帖最后由 doudou33420 于 2014-11-5 15:24 编辑  
 
随便写的 看看是你要的结果么 
- //
 
 - //  main.m
 
 - //  sad asd2
 
 - //
 
 - //  Created by PG on 14/11/4.
 
 - //  Copyright (c) 2014年 PG. All rights reserved.
 
 - //洗扑克牌。将54张牌分别编号为1,2,…,54号,并放在数组M中。洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换;然后产生[2,54]之间的随机整数K,让M[2]与M[K]交换;…,直到剩下最后一张牌为止。请编写实现上述洗牌的程序。
 
  
- #import <Foundation/Foundation.h>
 
  
- int main(int argc, const char * argv[]) {
 
 -  
 
 -     @autoreleasepool {
 
 -         int poker[54];
 
 -         //将54张牌分别编号为1,2,…,54号,并放在数组M中
 
 -         for (int i = 0 ; i < 54; i ++) {
 
 -             poker[i] = i+1;
 
 -         }
 
 -         
 
 -         for (int i = 0; i <54; i ++) {
 
 -             //产生[i,54]区间内的一个随机数K
 
 -             int randomK = (arc4random() % (54 -i))+i ;
 
 -             printf("产生了%d,54之间随机数%d poker[\%d] 的值是%d\n",i,randomK,randomK,poker[randomK]);
 
 -             
 
 -             printf("poker[\%d]的值是%d, 开始与poker[\%d]换位置了\n",i,poker[i],randomK);
 
 -             // 将M[1]与M[K]交换
 
 -             int temp = poker[i];
 
 -             poker[i] = poker[randomK];
 
 -             poker[randomK] = temp;
 
 -             
 
 -   
 
 -             for (int i = 0; i <54; i ++) {
 
 -                 printf("%d\t",poker[i]);
 
 -             }
 
 -             printf("\n");
 
 -  
 
 -         }
 
  
-     }
 
 -     
 
 -     return 0;
 
 - }
 
 
  复制代码 
 
 
 |