rand()函数会返回一个伪随机数,但是这是通过一种数学公式推算出来的,得到的随机数分布太集中,这时候要使用srand()函数来设定产生随机数的种子,一般采用当前时间作为种子,这样可以得到分布比较均匀的伪随机数。
rand(),srand()函数位于stdlib.h文件中,取得时间的time()函数位于time.h文件中。随机数测试如下:
#i
nclude
<stdio.h>
#i
nclude
<stdlib.h>
#i
nclude<time.h>
void
main()
{
int
results[10]/*用于保存随机数产生的结果*/
int
i=0
srand((int)time(0))/*设定种子*/
for(i=0i<10i++)
{
results[i]=0
}
for(i=0i<10000i++)
{
(results[rand()%10])++/*取一万次随机数,使用求余运算符使得最后取得的随机数小于10*/
}
for(i=0i<1
0i++)
{
printf("
%d
%d
\n",i,results[i])/*输出0-9之间的随机数出现的次数*/
}
}
经多次运行试验,产生的随机数比较均匀
这题可以用最笨的办法解决——
代码文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int a,b,c,x,y,z,i,j,k
printf("The result is as following:\n")
for(a=1a<10a++)
for(b=1b<10b++)
if(b-a)
for(c=1c<10c++)
if(c-a &&c-b)
for(x=1x<10x++)
if(x-a &&x-b &&x-c)
for(y=1y<10y++)
if(y-a &&y-b &&y-c &&y-x)
for(z=1z<10z++)
if(z-a &&z-b &&z-c &&z-x &&z-y)
for(i=1i<10i++)
if(i-a &&i-b &&i-c &&i-x &&i-y &&i-z)
for(j=1j<10j++)
if(j-a &&j-b &&j-c &&j-x &&j-y &&j-z &&j-i)
for(k=1k<10k++)
if(k-a &&k-b &&k-c &&k-x &&k-y &&k-z &&k-i &&k-j
&&a*200+b*20+c*2==x*100+y*10+z &&a*300+b*30+c*3==i*100+j*10+k)
printf("\t%d%d%d\n\t%d%d%d\n\t%d%d%d\n\n",a,b,c,x,y,z,i,j,k)
return 0
}
/*首先我要说的是这五个数字是互不相同的,两个4位数不一定是相同的*/#include
main()
{
long
n1,n2,n3,n4,k,m
for(n1=1n1<10n1++)
{
for(n2=1n2<10n2++)
{
if(n2==n1)
continue
for(n3=1n3<10n3++)
{
if(n3==n2||n3==n1)
continue
for(n4=1n4<10n4++)
{
if(n4==n1||n4==n2||n4==n3)
continue
m=n1*1000+n2*100+n3*10+n4
for(k=1k<10k++)
{
if(k==n1||k==n2||k==n3||k==n4)
continue
if(m*k<10000)
{
printf("this
number
of
4
digits
is
%d\t",m)
printf("this
one
digit
is
%d\n",k)
}
}
}
}
}
}
}