| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1275 人关注过本帖
标题:求解,随机生成一组数,然后对比是否有相等的数,如果有就重新生成
只看楼主 加入收藏
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
求解,随机生成一组数,然后对比是否有相等的数,如果有就重新生成
随机生成一组数,然后对比是否有相等的数,如果有就重新生成

不知道哪里出错了。。求帮忙解决

# include <stdio.h>
# include <stdlib.h>
# include <time.h>

int main()
{
    int num[N];
    srand((unsigned int)time(NULL));

    for (int i = 0; i < N; i++)
    {
        num[i] = rand()%12+1;
    }

    for (int i = 0; i < N; i++)
    {
        printf("%2d ",num[i]);
    }
    printf("\n\n");
   
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N-i-1; j++)
        {
            if (num[i] == num[j])
            {
                num[i] = rand() % 12 + 1;
            }
        }
    }

    for (int i = 0; i < N; i++)
    {
        printf("%2d ", num[i]);
    }
    return 0;
}
2016-03-29 19:43
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
const int N = XXX;
2016-03-29 20:26
我不会喜欢你
Rank: 2
等 级:论坛游民
帖 子:40
专家分:63
注 册:2016-3-8
收藏
得分:0 
我怎么觉得这个不可能实现呀
2016-03-29 20:28
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 2楼 hjx1120
不要这样的。。
2016-03-29 21:00
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 3楼 我不会喜欢你
怎么就无法实现呢,,,
2016-03-29 21:00
我不会喜欢你
Rank: 2
等 级:论坛游民
帖 子:40
专家分:63
注 册:2016-3-8
收藏
得分:0 
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
#define N 12
int main()
{
    int num[N];
    int i,j;
    srand((unsigned int)time(NULL));

    for ( i = 0; i < N; i++)
    {
        num[i] = rand()%12+1;
    }

    for ( i = 0; i < N; i++)
    {
        printf("%2d ",num[i]);
    }
    printf("\n\n");
        for ( i = 0; i < N; i++)
    {
        num[i] = rand()%12+1;
    }

    for ( i = 0; i < N; i++)
    {
        printf("%2d ",num[i]);
    }
    return 0;
}

这是我的代码,你试一下
2016-03-29 21:09
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 6楼 我不会喜欢你
这样肯定不对。。这样第二次生成的又无法保证它里面的数是否存在相同的了。
2016-03-29 21:30
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
#define N 12
int main()
{
    int num[N];
    srand((unsigned int)time(NULL));

    for (int i = 0; i < N; i++)
    {
        num[i] = rand() % 12 + 1;
    }

    for (int i = 0; i < N; i++)
    {
        printf("%2d ", num[i]);
    }
    printf("\n\n");

    for (int i = 0; i < N; i++)
    {
        for (int j = N -1; j > i; j--)
        {
            if (num[i] == num[j])
            {
                num[j] = rand() % 12 + 1;
                /* 如果新生成的数和其他数相等,则不停生成 */
                    for (int k = 0; k < N; k++)
                    {
                        if (k == j)
                        {
                            continue;
                        }
                        if (num[j] == num[k])
                        {
                            num[j] = rand() % 12 + 1;
                            k = 0;
                        }                        
                    }
            }
        }
    }

    for (int i = 0; i < N; i++)
    {
        printf("%2d ", num[i]);
    }
    return 0;
}
2016-03-30 09:34
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 8楼 grmmylbs
多谢。。
可是貌似还是有相同的数。。


图片附件: 游客没有浏览图片的权限,请 登录注册
2016-03-31 09:26
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:20 
                        if (num[j] == num[k])
                         {
                             num[j] = rand() % 12 + 1;
                             k = 0;
                         }        

把k = 0改成k = -1试试
2016-03-31 09:28
快速回复:求解,随机生成一组数,然后对比是否有相等的数,如果有就重新生成
数据加载中...
 
   



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

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