高手们 rand()%10 是什么意思

#include<stdio.h>
#include<stdlib.h>
void main(void)
{
int a=rand()%10,b=rand()%10,c,d;
c=a>b?a:b;
d=a<b?a:b;
printf("a=%d,b=%d\n",a,b);
printf("c=%d,d=%d\n",c,d);
} //运行结果为什么是a=1,b=7
c=7,d=1
难道a不能=3,b不能=9吗

rand()会返回一随机数值,范围在0至RAND_MAX 间,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。

0~RAND_MAX每个数字被选中的机率是相同的。rand()%10 取出所得的随机数的个位。

扩展资料:

rand()函数使用延伸

若要生成 a 与 b 之间的随机实数,应使用: RAND()*(b-a)+a

如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-12

rand( )用于产生一个伪随机的无符号整数。

rand()%10表示将产生的随机数对10求余,结果为余数,整体表示产生0到9的随机数。


用rand() % 10;来生成 0 到 9 之间的随机数这种方法是不可取的,比较好的做法是: 

j=(int)(n*rand()/(RAND_MAX+1.0))产生一个0到n之间的随机数

#include<stdio.h>
#include<stdlib.h>  // rand函数所需得到头文件
void main() 
{ 
    int i,j;  
    for(i=0;i<10;i++)  
    {
      j=1+(int)(10.0*rand()/(RAND_MAX+1.0));   // 产生0到10之间的随机数
      printf("%d ",j); 
    }  
}

执行以上程序后生成如下序列:    

9 4 8 8 10 2 4 8 3 6
  

9 4 8 8 10 2 4 8 3 6  //再次执行仍然产生相同的随机数

第2个回答  2019-10-30
rand(
)用于产生一个伪随机的无符号整数。
rand()%10表示将产生的随机数对10求余,结果为余数,整体表示产生0到9的随机数。
用rand()
%
10;来生成
0

9
之间的随机数这种方法是不可取的,比较好的做法是:
j=(int)(n*rand()/(RAND_MAX+1.0))产生一个0到n之间的随机数
#include
#include
// rand函数所需得到头文件
void main() 
{ 
int i,j;  
for(i=0;i<10;i++)  
{
 j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); // 产生0到10之间的随机数
  printf("%d ",j);
}  
}执行以上程序后生成如下序列:
  
9
4
8
8
10
2
4
8
3
6
9
4
8
8
10
2
4
8
3
6
//再次执行仍然产生相同的随机数
第3个回答  2010-05-13
rand()会返回一随机数值,范围在0至RAND_MAX 间,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。
0~RAND_MAX每个数字被选中的机率是相同的。

rand()%10 取出所得的随机数的个位。

你还要在使用rand()之间,用srand()产生随机数种子。
srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
你的程序改为以下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(void)
{
int a,b,c,d;
srand((int)time(0));
a=rand()%10,b=rand()%10;
c=a>b?a:b;
d=a<b?a:b;
printf("a=%d,b=%d\n",a,b);
printf("c=%d,d=%d\n",c,d);
}

这样每次运行结果是不相同的,随机的.
第4个回答  推荐于2017-09-08
#include<stdio.h>
#include<stdlib.h>
#include<time.h>//添加
void main(void)
{
srand(time(NULL));//添加
int a=rand()%10,b=rand()%10,c,d;
c=a>b?a:b;
d=a<b?a:b;
printf("a=%d,b=%d\n",a,b);
printf("c=%d,d=%d\n",c,d);
}
需要初始化随机数发生器,否则随即的数会是相同的。本回答被提问者采纳
相似回答