回 帖 发 新 帖 刷新版面

主题:c语言随机数的问题,从速~~~~在线等

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
main() 

unsigned int sjs; 
int a,b,c,d; 
sjs=rand()%10000; 
while(sjs<1000) 

sjs=rand()%10000; 
d=sjs%10; 
c=(sjs/10)%10; 
b=(sjs/100)%10; 
a=(sjs/1000)%10; 
while(a==b||b==c||c==d||b==d||a==c||a==d) 

sjs=rand()%10000; 
while(sjs<1000) 
sjs=rand()%10000; 


printf("***********************************************\n\n"); 
printf("The number have been came out%d\n",sjs); 
printf("\n***********************************************\n"); 

这是一段关于产生四位随机数的源程序,但不知道为什么每次产生的数都是一样的,有没有办法让每次产生的四位随机数都不一样?望各位指点指点~~~怎样进行修改才能使每次产生的四位随机数都不一样,最好加上说明,因为我只是个新手,对随机数这块不怎么清楚~~~谢谢哈!

回复列表 (共1个回复)

沙发

你没有重新产生新的随机数种子,所以随机数序列是固定不变的。现在一般都是根据系统时间来产生随机数种子:
#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
main() 

unsigned int sjs; 
int a,b,c,d; 
[color=FF0000]srand((unsigned)time(NULL));//产生随机数种子[/color]
sjs=rand()%10000; 
while(sjs<1000) 

sjs=rand()%10000; 
d=sjs%10; 
c=(sjs/10)%10; 
b=(sjs/100)%10; 
a=(sjs/1000)%10; 
while(a==b||b==c||c==d||b==d||a==c||a==d) 

sjs=rand()%10000; 
while(sjs<1000) 
sjs=rand()%10000; 


printf("***********************************************\n\n"); 
printf("The number have been came out%d\n",sjs); 
printf("\n***********************************************\n"); 


我来回复

您尚未登录,请登录后再回复。点此登录或注册