鱼C论坛

 找回密码
 立即注册
查看: 2284|回复: 9

[已解决]随机数

[复制链接]
发表于 2020-6-25 16:43:56 | 显示全部楼层 |阅读模式

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

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

x
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int main()
  4. {
  5.         int i,j,a[3][4];
  6.         int max,row=0,column=0;
  7.         for (i=0;i<3;i++)
  8.         for (j=0;j<4;j++)
  9.         {
  10.                 a[i][j]=rand()%10;
  11.         }
  12.         max=a[0][0];
  13.         for (i=0;i<3;i++)
  14.         for (j=0;j<4;j++)
  15.         {
  16.                 if(a[i][j]>max)
  17.                 {
  18.                         max=a[i][j];
  19.                         row=i;
  20.                         column=j;
  21.                 }
  22.                 printf("%3d",a[i][j]);
  23.                 if(j==3)
  24.                 {
  25.                         printf("\n");
  26.                 }
  27.         }
  28.         printf("最大的数为%d\n",max);
  29.         printf("位置为%d行%d列",row+1,column+1);
  30. }
复制代码

就是这段代码,我运行了几回产生的随机数都一样,有大佬能指点一下为什么吗
最佳答案
2020-6-25 17:03:36
小甲鱼的铁粉 发表于 2020-6-25 16:58
楼主少了一个东西srand(time(NULL));这个是让每次运行产生的随机数都不同的方法,需要调用一下,正确代码如 ...

代码缩进乱了,再来一个
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {
  6.         int i,j,a[3][4];
  7.         int max,row=0,column=0;
  8.         srand(time(NULL));
  9.         for (i=0;i<3;i++)
  10.         for (j=0;j<4;j++)
  11.         {
  12.                 a[i][j]=rand()%10;
  13.         }
  14.         max=a[0][0];
  15.         for (i=0;i<3;i++)
  16.         for (j=0;j<4;j++)
  17.         {
  18.                 if(a[i][j]>max)
  19.                 {
  20.                         max=a[i][j];
  21.                         row=i;
  22.                         column=j;
  23.                 }
  24.                 printf("%3d",a[i][j]);
  25.                 if(j==3)
  26.                 {
  27.                         printf("\n");
  28.                 }
  29.         }
  30.         printf("最大的数为%d\n",max);
  31.         printf("位置为%d行%d列",row+1,column+1);
  32. }
复制代码
批注 2020-06-25 164251.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-25 16:47:42 | 显示全部楼层
你设置下种子试试?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 16:58:27 | 显示全部楼层
楼主少了一个东西srand(time(NULL));这个是让每次运行产生的随机数都不同的方法,需要调用一下,正确代码如下

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {
  6.         int i,j,a[3][4];
  7.         int max,row=0,column=0;
  8.         srand(time(NULL));
  9.         for (i=0;i<3;i++)
  10.                 for (j=0;j<4;j++)
  11.                 {
  12.                 a[i][j]=rand()%10;
  13.                 }
  14.         max=a[0][0];
  15.         for (i=0;i<3;i++)
  16.                 for (j=0;j<4;j++)
  17.                        {
  18.                 if(a[i][j]>max)
  19.                 {
  20.                         max=a[i][j];
  21.                         row=i;
  22.                         column=j;
  23.                 }
  24.                 printf("%3d",a[i][j]);
  25.                 if(j==3)
  26.                 {
  27.                         printf("\n");
  28.                 }
  29.                 }
  30.         printf("最大的数为%d\n",max);
  31.         printf("位置为%d行%d列",row+1,column+1);
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 16:59:52 | 显示全部楼层
c语言中语句srand( (time(NULL) ) ; 表示设置bai一个随机种子,每次运行都能保证du随机种子不同。zhi在C语言中,rand()函数可以用来dao产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值。因此,C提供了srand()函数,它的原型是 void srand( int a)。用来改变这个种子值。srand( (time(NULL) )中time(NULL)函数是得到一个从1900年1月1日到现在的时间秒数,这样每一次运行程序的时间的不同就可以保证得到不同的随机数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 17:03:36 | 显示全部楼层    本楼为最佳答案   
小甲鱼的铁粉 发表于 2020-6-25 16:58
楼主少了一个东西srand(time(NULL));这个是让每次运行产生的随机数都不同的方法,需要调用一下,正确代码如 ...

代码缩进乱了,再来一个
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {
  6.         int i,j,a[3][4];
  7.         int max,row=0,column=0;
  8.         srand(time(NULL));
  9.         for (i=0;i<3;i++)
  10.         for (j=0;j<4;j++)
  11.         {
  12.                 a[i][j]=rand()%10;
  13.         }
  14.         max=a[0][0];
  15.         for (i=0;i<3;i++)
  16.         for (j=0;j<4;j++)
  17.         {
  18.                 if(a[i][j]>max)
  19.                 {
  20.                         max=a[i][j];
  21.                         row=i;
  22.                         column=j;
  23.                 }
  24.                 printf("%3d",a[i][j]);
  25.                 if(j==3)
  26.                 {
  27.                         printf("\n");
  28.                 }
  29.         }
  30.         printf("最大的数为%d\n",max);
  31.         printf("位置为%d行%d列",row+1,column+1);
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 17:26:49 From FishC Mobile | 显示全部楼层
c语言看着就好可怕
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 17:48:42 | 显示全部楼层
tiger吴 发表于 2020-6-25 17:26
c语言看着就好可怕

但 python是C写的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-25 18:27:41 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-6-25 17:03
代码缩进乱了,再来一个

大佬,请收下我的膝盖
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 18:33:25 | 显示全部楼层
君子好逑 发表于 2020-6-25 18:27
大佬,请收下我的膝盖

不客气
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-25 18:35:10 | 显示全部楼层
tiger吴 发表于 2020-6-25 17:26
c语言看着就好可怕

哈哈,个人c语言其实多练题之后还是很简单的,当然个人觉得指针除外
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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