本帖最后由 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;
- }
复制代码
|