c语言如何实现随机生成多个数组至少要100个

#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain(){inta[8],i;srand((unsign... #include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a[8],i;
srand((unsigned)time(NULL));
int j=0;
while (j<8)
{
a[j] =rand()%36+1;
for(i=0;i<j;i++)
{
if(a[i]==a[j])
a[j]=rand()%36+1;
}
printf("%-3d",a[j]);
j++;
}
}
这是随机生成一个,要实现多个不能一个一个打把
展开
 我来答
幻翼高达Zero
2019-07-19 · TA获得超过1.7万个赞
知道答主
回答量:499
采纳率:0%
帮助的人:7.8万
展开全部

需要准备的材料分别有:电脑、C语言编译器

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:

srand((unsigned)time(NULL)); 

for (int i = 0;i < 100; i++) {

printf("%d ", rand());

}

3、编译器运行test.cpp文件,此时成功随机生成了100个随机数

tattackor
推荐于2017-10-13 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:876万
展开全部
  1. C语言中随机函数需要使用到srand和rand。

    srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将srand(unsigned)time(NULL)改为srand(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都会是一组固定的序列,因此srand生成的随机数是伪随机数。[1]
    库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:
    函数一:int rand(void);
    返回一个[0,RAND_MAX]间的随机整数。
    函数二:void srand(unsigned seed);
    参数seed是rand()的种子,用来初始化rand()的起始值。

  2. 例程:

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main(){
        int a[8],i,j;
        srand((unsigned)time(NULL)); 
        for(j=1;j<101;j++){
           printf("\n第%d组随机数组:\n",j);
           for(i=0;i<8;i++){
              a[i] =rand()%36+1; 
              printf("%-3d",a[i]);
           }
        }    
        return 0;
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhezcb0755
2013-06-25 · TA获得超过643个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:115万
展开全部

二维数组解决.

比如你要生成100套,每套8数据, 就定义a[100][8];

外循环用行下标, 内循环用列下标就行了, 如:

for (i = 0; i < 100; i++) {
    for (j = 0; j < 8; j++) {
         a[i][j] = rand() % 36 + 1;   
    }
}

如果你要判断, 必须不同, 那你再加相关进去, 不过不能再用j了, 因为j用来循环了. 

更多追问追答
追问
我这二维数组有错能在我的例子上修改么0 0
追答

你根本就不是二维数组啊.  这样吧, 我写个给你吧, 这里面用到了洗牌算法, 保证不会有重复的数据, 效率相当高:


#include <stdio.h>
#include <stdlib.h>

#define ROW 100
#define COL 8

int main(void)
{
    int num[ROW][COL];        
    int tmp[ROW * COL];     // 临时数组
    int i, j, ret, last;
    
    for (i = 0; i < ROW * COL; i++) {         // 形成0-799这800个数
        tmp[i] = i;
    }   
    
    srand(time(NULL));                      // 随机种子
    
    last = ROW * COL;
    for (i = 0; i < ROW; i++) {             // 外循环
        for (j = 0; j < COL; j++) {
            // 随机到下标,模last, last从800减到1, 使模到的下标越来越小.
            ret = rand() % last;            
            num[i][j] = tmp[ret];           // 取出此下标的数字
           
            /* 下标数字被取走, 从tmp后面补过来, 这样就算随到重复的下标
             也是不同的数字, 由于后面下标被移走, 将last减1, 不用每次随800*/
            tmp[ret] = tmp[--last];         
        }   
    }   
    // 打印值, 检查结果
    for (i = 0; i < ROW; i++) {
        for (j = 0; j < COL; j++) {
            printf("%3d ", num[i][j]);
        }   
        puts(""); 
    }   
    
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
推荐于2017-10-11 · TA获得超过8608个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3442万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main() {
 int a[N] = {0},i,j,num,flag;
 srand((unsigned)time(NULL));
 for(i = 0; i < N; ++i) {
  flag = 1;
  num = rand()%36 + 1;
  for(j = 0;j <= i;j++) {
   if(a[j] == num) {
    flag = 0;
    break;
   }
  }
  if(flag) {
   a[i] = num;
   printf("%d ",a[i]);
  }
  else --i;
 }
 printf("\n");
 return 0;
}
更多追问追答
追问
这是随机生成一个吧,,不是多个
追答

方法是一样的。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
#define M 15
void Generator(int a[], int n) {
 int i,j,num,flag;
 for(i = 0; i < n; ++i) {
  flag = 1;
  num = rand()%36 + 1;
  for(j = 0;j <= i;j++) {
   if(a[j] == num) {
    flag = 0;
    break;
   }
  }
  if(flag) a[i] = num;
  else --i;
 }
}
int main() {
 int a[M][N] = {0},i,j;
 srand((unsigned)time(NULL));
 for(i = 0; i < M; ++i) {
  Generator(a[i],N);
  for(j = 0; j < N; ++j)
   printf("%3d ",a[i][j]);
  printf("\n");
 }
 return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ayktx
2013-06-25 · TA获得超过668个赞
知道小有建树答主
回答量:946
采纳率:33%
帮助的人:412万
展开全部
嵌套循环就行了
追问
能做个师范么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式