c语言怎么生成随机数?

问题描述:

c语言怎么生成随机数?
定义一个数组,怎么生成100个随机数(范围为1000到2000).
在这个数组中怎么随机选取一个作为i?
1个回答 分类:综合 2014-11-15

问题解答:

我来补答

完整的代码,红圈处就是从上面100个数字中抽取到的数字:

#include <stdio.h>
#include<stdlib.h>                  //生成随机数用 
#include<time.h>                    //利用时间生成种子 
#include<math.h>                    

int main()
{
      int i;
\x09  int a[100];
      srand( time(NULL) );         //生成种子 

      for(i=0;i<100;i++)
      {
       a[i]=rand()%1000+1000;      //生成一个小于1000的随机数
\x09                               //然后加1000,变成 1000 - 2000之间的数 
       printf("%d  ",a[i]);       //打印 
      }

       i=rand()%100;              //随机抽取其中的一个数 
       printf("\n抽取到的是:%d\n",a[i]);//打印 

      
      return 0; 
}
再问: i=rand()%100;不是生成1个小于100的随机数吗?怎么成了抽取其中的一个数
再答: 因为上面的代码,已经将1000-2000的数字放在了a【100】的数组内; 要取出其中一个数字的时候,只需要生成 0 - 99 就能得到想要的数字了!
再问: 怎么是从a[100]中取的呢?没有可能重新生成新的吗
再答: 你的要求不是:在这个数组中怎么随机选取一个作为i?这样提的吗你的意思是将这个取得的值,赋给 i  ??#include <stdio.h>
#include<stdlib.h>                  //生成随机数用 
#include<time.h>                    //利用时间生成种子 
#include<math.h>                    

int main()
{
      int i;
  int a[100];
      srand( time(NULL) );         //生成种子 

      for(i=0;i<100;i++)
      {
       a[i]=rand()%1000+1000;      //生成一个小于1000的随机数
                               //然后加1000,变成 1000 - 2000之间的数 
       printf("%d  ",a[i]);       //打印 
      }

       i=rand()%100;              //随机抽取其中的一个数 

       i= a[i];                   // 这里把抽取的值赋给了 i  
       
   printf("\n抽取到的是:%d\n", i );//打印 i
      return 0; 
}
 
 
展开全文阅读
剩余:2000
上一页:关于ATP```````