给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
来源:互联网 发布:mac 共享文件夹 防火墙 编辑:程序博客网 时间:2024/05/22 21:22
分析:首先54张牌分别用0到53 的数值表示并存储在一个整形数组里,数组下标代表纸牌所在的位置。接下来,遍历整个数组,在遍历过程中随机产生一个随机数,并以该随机数为下标的数组元素与当前遍历到的数组元素进行对换。时间复杂度为O(n) (注:所得到的每一种结果的概率的分母越大越好)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void shuffle(int boke[]) //洗牌
{
int i,r,t;
srand((unsigned)time(NULL)); //随机数种子
for(i=0; i<54; i++)
{
r=(rand()%107)/2;
//交换
t=boke[i];
boke[i]=boke[r];
boke[r]=t;
}
}
int main()
{
int boke[54],i;
for(i=0;i<54;i++) //初始化纸牌
boke[i]=i;
printf("before shuffle:\n");
for(i=0; i<54; i++) //打印
printf("%d ",boke[i]);
shuffle(boke); //洗牌
printf("\nafter shuffle:\n");
for(i=0; i<54; i++) //打印
printf("%d ",boke[i]);
return 0;
}
- 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- JAVA实现:给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- 开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里
- 开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里
- 面试100题系列之6给出洗牌的一个算法,并把洗好的牌放在一个整型的数组里
- 洗牌的一个算法
- 一个很小的洗牌算法
- 洗牌算法:随机打乱一个数组的顺序
- 洗牌算法:随机打乱一个数组的顺序
- 洗牌算法:随机打乱一个数组的顺序
- 用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数
- 算法 给出一个数组,求连续相邻的最大面积
- 在一个整形数组中去掉重复的数字
- 输入一个字符串,存储在字符数组里,用指针的方式逐一显示字符,并求其长度
- 每天学习一算法系列(4) (输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和)
- 每天学习一算法系列(4) (输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和)
- C输入一个字符串,将其中连续的数字做为一个整数存放在一个整形数组中,统计其中数字的个数并输出这些整数。
- Android Launcher 各个类分析
- 触发器的小例子
- request_mem_region,ioremap 和phys_to_virt()
- nginx 平滑升级
- SQL查询命令的语法小结01
- 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- swftools安装
- HTML5之美
- jsTree插件简介(五)
- Java:ManualResetEvent
- poj 3292 Semi-prime H-numbers
- 抛开产品人员,如何做好研发驱动
- IIS详细的安装过程
- 问题驱动的软件测试管理 - 解决方案