鱼C论坛

 找回密码
 立即注册
查看: 1010|回复: 3

[已解决]求助各位大神,怎么让随机数不相同?

[复制链接]
发表于 2022-2-20 14:31:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大神,我按照现在学习的进度没有学习数组,就自己搞了一个双色球,有什么方法将每个随机球输出不一样的值吗?
代码奉上:#include<stdio.h>
#include<time.h>
int main()
{
        srand(time(NULL));
        int h1,h2,h3,h4,h5,h6;
        int l1;
        int i = 0;
        while (i<10)
        {
                h1 = rand() % 33 + 1;
                h2 = rand() % 33 + 1;
                h3 = rand() % 33 + 1;
                h4 = rand() % 33 + 1;
                h5 = rand() % 33 + 1;
                h6 = rand() % 33 + 1;
                l1 = rand() % 16 + 1;
                i++;
                printf("红球:%d\t,%d\t,%d\t,%d\t,%d\t,%d\n.蓝球:%d\n",h1,h2,h3,h4,h5,h6,l1);
        }
        return 0;
}
最佳答案
2022-2-20 18:03:27
本帖最后由 jhq999 于 2022-2-20 18:31 编辑
#include<time.h>
int main()
{
        srand(time(NULL));
        int h1=0,h2=0,h3=0,h4=0,h5=0,h6=0;
        int l1=0;
        int rndval=0,flag=1;
         l1 = rand() % 16 + 1;
        while (1)
        {
                flag=1;
               do{rndval=rand() % 33 + 1;}while(rndval==h1||rndval==h2||rndval==h3||rndval==h4||rndval==h5||rndval==h6);
    
                if(!h1) h1=rndval,flag=0;
                if(!h2&&flag) h2=rndval,flag=0;
                if(!h3&&flag) h3=rndval,flag=0;
                if(!h4&&flag) h4=rndval,flag=0;
                if(!h5&&flag) h5=rndval,flag=0;
                if(!h6&&flag) h6=rndval,flag=0;

                if(flag)break;
        }
        printf("红球:%d\t,%d\t,%d\t,%d\t,%d\t,%d\n.蓝球:%d\n",h1,h2,h3,h4,h5,h6,l1);
        return 0;
}
红球:23        ,6      ,12     ,27     ,2      ,16
.蓝球:11

int main()
{
        srand(time(NULL));
        int h1=0,h2=0,h3=0,h4=0,h5=0,h6=0;
        int l1=0;
        int rndval=0;
         l1 = rand() % 16 + 1;
        while (!(h1&&h2&&h3&&h4&&h5&&h6))
        {
                
               do{rndval=rand() % 33 + 1;}while(rndval==h1||rndval==h2||rndval==h3||rndval==h4||rndval==h5/*||rndval==h6*/);
    
                if(!h1) h1=rndval;
                else if(!h2) h2=rndval;
                else if(!h3) h3=rndval;
                else if(!h4) h4=rndval;
                else if(!h5) h5=rndval;
                else if(!h6) h6=rndval;

                
        }
        printf("红球:%d\t,%d\t,%d\t,%d\t,%d\t,%d\n.蓝球:%d\n",h1,h2,h3,h4,h5,h6,l1);
        return 0;
}
红球:8 ,30     ,33     ,14     ,17     ,28
.蓝球:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-20 16:36:33 | 显示全部楼层
for循环,rand生成的放在外边https://fishc.com.cn/forum.php?m ... peid%26typeid%3D583
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-20 18:03:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2022-2-20 18:31 编辑
#include<time.h>
int main()
{
        srand(time(NULL));
        int h1=0,h2=0,h3=0,h4=0,h5=0,h6=0;
        int l1=0;
        int rndval=0,flag=1;
         l1 = rand() % 16 + 1;
        while (1)
        {
                flag=1;
               do{rndval=rand() % 33 + 1;}while(rndval==h1||rndval==h2||rndval==h3||rndval==h4||rndval==h5||rndval==h6);
    
                if(!h1) h1=rndval,flag=0;
                if(!h2&&flag) h2=rndval,flag=0;
                if(!h3&&flag) h3=rndval,flag=0;
                if(!h4&&flag) h4=rndval,flag=0;
                if(!h5&&flag) h5=rndval,flag=0;
                if(!h6&&flag) h6=rndval,flag=0;

                if(flag)break;
        }
        printf("红球:%d\t,%d\t,%d\t,%d\t,%d\t,%d\n.蓝球:%d\n",h1,h2,h3,h4,h5,h6,l1);
        return 0;
}
红球:23        ,6      ,12     ,27     ,2      ,16
.蓝球:11

int main()
{
        srand(time(NULL));
        int h1=0,h2=0,h3=0,h4=0,h5=0,h6=0;
        int l1=0;
        int rndval=0;
         l1 = rand() % 16 + 1;
        while (!(h1&&h2&&h3&&h4&&h5&&h6))
        {
                
               do{rndval=rand() % 33 + 1;}while(rndval==h1||rndval==h2||rndval==h3||rndval==h4||rndval==h5/*||rndval==h6*/);
    
                if(!h1) h1=rndval;
                else if(!h2) h2=rndval;
                else if(!h3) h3=rndval;
                else if(!h4) h4=rndval;
                else if(!h5) h5=rndval;
                else if(!h6) h6=rndval;

                
        }
        printf("红球:%d\t,%d\t,%d\t,%d\t,%d\t,%d\n.蓝球:%d\n",h1,h2,h3,h4,h5,h6,l1);
        return 0;
}
红球:8 ,30     ,33     ,14     ,17     ,28
.蓝球:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-20 20:01:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 12:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表