在C语言编程中,如何实现让电脑随机输出一1~9的整数?

Python016

在C语言编程中,如何实现让电脑随机输出一1~9的整数?,第1张

c语言中取得伪随机数主要使用srand()和rand()这两个函数.

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)

}

}

}

}

}

}

}