| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 535 人关注过本帖
标题:扑克洗牌调整顺序,算法怎么办?
只看楼主 加入收藏
jinanshui
Rank: 2
等 级:论坛游民
帖 子:294
专家分:67
注 册:2009-10-6
结帖率:93.88%
收藏
已结贴  问题点数:20 回复次数:2 
扑克洗牌调整顺序,算法怎么办?
1.给下列数据赋值c(1),c(2),c(3),c(4),c(5),c(6),c(7),c(8),c(9),c(10),c(11),c(12),c(13),好做
2.取随机数n=int(rand()*13)+1,例如n=6
3.调整后的顺序为c(1),c(2),c(3),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(6)
第6个数移到最后,c(7),c(8),c(9),c(10),c(11),c(12),c(13),各前移1个位置。
4.再取随机数n=int(rand()*12)+1,例如n=3
5.上面的顺序调整后的顺序为c(1),c(2),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(3),c(6)
第三个数移到倒数第2的位置,第4、5、6、、、11个数个向前移动一个位置。
6.再取随机数n=int(rand()*11)+1,例如n=5
7.再调整后的顺序为c(1),c(2),c(4),c(5),c(8),c(9),c(10),c(11),c(12),c(13),c(7),c(3),c(6)
8.、、、、、
9.、、
连续操作5次,怎么办?各位老师出手谢谢
搜索更多相关主题的帖子: color 
2013-07-28 19:06
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <malloc.h>
#include <time.h>
int h; 

typedef struct LNode
{
    int data;
    struct LNode *next;
}*LinkList; 

void InitLinkList(LinkList &L)
{
    L = (LinkList)malloc(sizeof(LNode));
    L -> next = NULL;
} 

void createLinkList(LinkList &L)
{
    LNode *p, *r = L;
    for(int i = 0; i < 13; i++)
    {
        p = (LNode *)malloc(sizeof(LNode));
        p -> data = i + 1;
        r -> next = p;
        r = p;
    }
    r -> next = NULL;
} 

void insertLinkList(LinkList &L)
{
    LNode *r = L -> next, *p;
    while(r -> next) r = r -> next;
    p = (LNode *)malloc(sizeof(LNode));
    p -> data = h;
    r -> next = p;
    r = p;
    r -> next = NULL;
} 

void deleteLinkList(LinkList &L, int m)
{
    LNode *p, *r = L;
    int i = 0;
    while(i < m)
    {
        i++;
        p = r;
        r = r -> next;
        h = r  -> data;
    }
    p -> next = r -> next;
} 

void outputLinkList(LinkList L)
{
    LNode *p = L -> next;
    while(p)
    {
        printf("%d ", p -> data);
        p = p -> next;
    }
    puts("");
} 

void destoryLinkList(LinkList &L)
{
    free(L);
    L -> next = NULL;
} 

int main()
{
    int n = 5, m, t = 13;
    LinkList L;
    InitLinkList(L);
    createLinkList(L);
    while(n--)
    {
        srand(time(0));
        m = (rand() % t--) + 1;
        deleteLinkList(L, m);
        insertLinkList(L);
        outputLinkList(L);
    }
    destoryLinkList(L);
    return 0;
}
速结..睡觉去..!


[ 本帖最后由 Susake 于 2013-7-28 20:13 编辑 ]

仰望星空...........不忘初心!
2013-07-28 20:12
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
晕..原来不是c/c++版的...!,睡觉!

仰望星空...........不忘初心!
2013-07-28 20:15
快速回复:扑克洗牌调整顺序,算法怎么办?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033693 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved