c语言1到99随机数函数 c语言随机产生1到100整数

在C语言编程中,如何实现让电脑随机输出一1~9的整数?c语言中取得伪随机数主要使用srand()和rand()这两个函数.
rand()函数会返回一个伪随机数,但是这是通过一种数学公式推算出来的,得到的随机数分布太集中,这时候要使用srand()函数来设定产生随机数的种子,一般采用当前时间作为种子,这样可以得到分布比较均匀的伪随机数 。
rand(),srand()函数位于stdlib.h文件中,取得时间的time()函数位于time.h文件中 。随机数测试如下:
#i
nclude
stdio.h
#i
nclude
stdlib.h
#i
ncludetime.h
void
main()
{
int
results[10];/*用于保存随机数产生的结果*/
int
i=0;
srand((int)time(0));/*设定种子*/
for(i=0;i10;i++)
{
results[i]=0;
}
for(i=0;i10000;i++)
{
(results[rand()%10])++;/*取一万次随机数,使用求余运算符使得最后取得的随机数小于10*/
}
for(i=0;i1
0;i++)
{
printf("
%d
%d
\n",i,results[i]);/*输出0-9之间的随机数出现的次数*/
}
}
经多次运行试验,产生的随机数比较均匀
如何在c语言中取0-99之间的随机数,而且不能重复到底要取多少个是很重要的 。如果就取几个 ,  那碰上相同的冲取就可以了 。如果要取很多很多,那么重取的方案就不划算了 。比如如果要取100次,也就是做个全排列,可以做个表, 每次从表中取数,取完了就把它从表里删除 。
#include stdio.h
#include time.h
#include stdlib.h
#define N 100
int main()
{
int candi[N];
int results[N] = {0};
int i, n =N, r;
srand((unsigned)time(0));
for(i=0; iN; ++i) candi[i] = i;
for (i=0; iN; ++i)
{
r = rand()%n;
results[i] = candi[r];
candi[r] = candi[--n];
}
for (i=0; iN; ++i)
{
printf("%d ", results[i]);
}
}
如何用c语言产生一定范围内的随机数?利用srand((unsigned int)(time(NULL))是一种方法 , 因为每一次运行程序的时间是不同的 。
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数 。它们就是rand()和srand()函数 。这二个函数的工作过程如下:
1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候 , 都可以给srand()提供一个新的种子 , 从而进一步“随机化”rand()的输出结果 。
下面是0~32767之间的随机数程序:
#include stdlib.h
#include stdio.h
#include time.h// 使用当前时钟做种子
void main(void)
{int i;
srand((unsigned)time( NULL ) );// 初始化随机数
for(i = 0; i10;i++)// 打印出 10 个随机数
printf("%d\n", rand() );
}
根据上面的程序可以很容易得到0~1之间的随机数:
#include stdlib.h
#include stdio.h
#include time.h
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i10;i++)
printf("%5.2f\n", rand()/32767.0);
}
而产生1~100之间的随机数可以这样写:
#include stdlib.h
#include stdio.h
#include time.h
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i10;i++)
printf("%d\n", rand()%100+1);
}
扩展资料:
C语言高效编程技巧:
一:以空间换时间

推荐阅读