给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
2012-08-01 19:55
585 查看
给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
一共是54张牌,只要把这54张牌随意排列就行,需要使用随机产生54个数。
void main()
{
int a[54] ,i ,r ,tmp;
for(i = 0;i<54 ;i++)
{
a[i] = i; //初始化,给每个牌给不同的值
}
for(i = 0;i<54 ;i++)
{
r = rand()%54; //随机产生0~53之间的值
tmp = a[r]; //把下标为r的这个位置的纸牌给 tmp
a[r] = a[i]; // 把下标为i的这个位置的纸牌给下标为r位置的纸牌
a[i] = tmp; //把下标为r的这个位置上的纸牌给位置为i的纸牌
} //这样循环操作54次,保证54个位置上的纸牌都能变换,但是不保证和原来的不相同。
for( i = 0;i<54 ;i++)
{
printf("%2d\n ",a[i]);
}
}
一共是54张牌,只要把这54张牌随意排列就行,需要使用随机产生54个数。
void main()
{
int a[54] ,i ,r ,tmp;
for(i = 0;i<54 ;i++)
{
a[i] = i; //初始化,给每个牌给不同的值
}
for(i = 0;i<54 ;i++)
{
r = rand()%54; //随机产生0~53之间的值
tmp = a[r]; //把下标为r的这个位置的纸牌给 tmp
a[r] = a[i]; // 把下标为i的这个位置的纸牌给下标为r位置的纸牌
a[i] = tmp; //把下标为r的这个位置上的纸牌给位置为i的纸牌
} //这样循环操作54次,保证54个位置上的纸牌都能变换,但是不保证和原来的不相同。
for( i = 0;i<54 ;i++)
{
printf("%2d\n ",a[i]);
}
}
相关文章推荐
- 开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里
- [置顶] 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。(思路2)
- 开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里
- JAVA实现:给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- [置顶] 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。(思路3)
- 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
- [置顶] 给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。(思路2)
- 面试100题系列之6给出洗牌的一个算法,并把洗好的牌放在一个整型的数组里
- 给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
- 数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小,数组中的数的取值范围是0<x<100,元素个数也是大于0, 小于100 。
- 每天学习一算法系列(4) (输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和)
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
- 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数
- 给出一个有效的算法来确定在整数A1<A2<A3<...<AN的数组中是否存在整数i使得Ai=i
- 搜狐笔试题:给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
- 洗牌算法:随机打乱一个数组的顺序
- 整数数组中,每个元素均出现两次,除了一个元素例外,如何找出这个元素?能否设计一个线性时间的算法,且不需要额外的存储空间?
- 洗牌算法:随机打乱一个数组的顺序
- 给定一个单调递增有序数组A,给定一个数字N,试给出一个算法得到A中该数字N出现的次数。