荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Ohoh (深大毕业生), 信区: Program
标 题: Re: 一个随机数的问题
发信站: 荔园晨风BBS站 (Sun May 25 20:08:46 2003), 站内信件
哈哈,就知道你要说发牌!
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX 54 /* 定义牌数 */
void push(int); /* 进栈 */
int pop(); /* 出栈 */
int find(int); /* 找相同随机数 */
int stack[54]; /* 定义一个栈 */
int top; /* 顶设定 */
void main( void )
{
int i;
int no;
srand((unsigned)time(NULL)); /* 设定随机数种子 */
for (i=0; i<MAX; i++){
no=(rand()%54); /* 产生小于54的随机数,相当于洗牌 */
/* 如果不等于0,和不同前面的随机数,则入栈 */
if (no!=0 && !find(no)) push(no);
}
printf("\tPLAYER1\tPLAYER2\tPLAYER3\tPLAYER4\n");
for(i=0; i<5; i++){
printf("\t%6d", pop()); /* 发牌 */
printf("\t%6d", pop());
printf("\t%6d", pop());
printf("\t%6d", pop());
printf("\n");
}
}
void push(int i) /* 进栈 */
{
stack[top++] = i;
}
int pop() /* 出栈,发牌 */
{
return stack[--top];
}
int find(int x)
{
int i;
for (i=0; i<top; i++)
if (stack[i] == x) return 1; /* 找到则返回1 */
return 0;
}
结果:
PLAYER1 PLAYER2 PLAYER3 PLAYER4
31 8 39 37
35 46 3 14
34 43 9 24
52 1 51 45
53 25 36 49
Press any key to continue
上面的结果为随机的结果,每次运行都不同的。嘿嘿
1-54 代表每一张牌。
程序写得很烂的,大概就这样吧,我的想法。不过我本来想模拟洗牌动作的,可惜,
不会!呵呵
【 在 xiaoxin (小新) 的大作中提到: 】
: 你的意思是?...
: 应该怎么用法呢。有一个数组是肯定的,但是我不知道怎样可以达到我说的
: 那样。
: 我想这个问题有点象洗扑克牌,有52张他随机发给每一家。
: 发52次就发完了,52张牌就象一个数组,但是怎么发出去呢?
: 【 在 Version (音乐,美的最初与最终) 的大作中提到: 】
: : 哦。那你用数组然后随机咯。
--
女生喜欢让她笑的男生,但她真正爱的,却是让她哭的男人!
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.32.45]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店