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

供稿:hz-xin.com     日期:2025-01-13
C语言 如何随机生成数组?

使用rand()函数+循环语句可生成一组随机数组。
1、C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随机数发生器,分别为 rand函数, random函数, randomize 函数。rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数。但这不是真正的随机数,C提供了srand()函数,它的原形是void srand( int a),用来设置一个种子数。在调用rand函数产生随机数前,应该先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。2、例程:
#include
#include
#include
void main(){
srand((unsigned)time(NULL)); //用当前系统时间设置种子
int a[100];
printf("随即初始化数组的100个数(范围是0~100).
");
for(int i=0;i<100;i++){
a[i]=rand()%101; //用rand函数生成0-100的随机数,并赋值给数组a[i]
printf("%4d",a[i]);
if(i%10==0 && i!=0)
printf("
");
}
getchar();
}

看代码:
#include #include void print_arr (int* a, int n){int i = 0;for (; i < n; ++i){printf ("%d ", a[i]); if ((i+1) % 10 == 0) { printf("
"); }}printf("
");}#define N 50int main(int argc, char** argv){ srand(time(NULL)); // 设置当前时间为随机数种子 int a[N], i;for (i = 0; i < N; i++){a[i] = rand() % 100 + 100;}print_arr(a, N); return 0;}运行:

需要准备的材料分别有:电脑、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个随机数。



  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("
    第%d组随机数组:
    ",j);
           for(i=0;i<8;i++){
              a[i] =rand()%36+1; 
              printf("%-3d",a[i]);
           }
        }    
        return 0;
    }


二维数组解决.

比如你要生成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用来循环了. 



#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("
");
 return 0;
}


嵌套循环就行了

int[] array = {1, 1,2,2, 6, 3, 8, 3, 4, 0, 5, 23, 52, 12, 234...
概述 随机函数就是产生数的函数,c语言里有rand(),srand()等函数。[编辑本段]用法 include <stdlib.h> include <stdio.h> include void main( void ){ int i,k;srand( (unsigned)time( NULL ) ); \/\/用系统时间当种子,对随机函数进行初始化 for( i = 0; i < 10;i++ ){ k=rand...

c语言生成10个不重复的随机整数,并输出
+ min; \/*产生min~max的随机数*\/}\/*打印数组*\/void printArr (elemType arr[], int len) {int i;for (i=0; i<len; i++)printf ("%d\\t",arr[i]);putchar ('\\n');}int main (void) {elemType arr[LEN];int len = 10; \/*10个随机数*\/randomArray (arr, len,...

这样的程序怎么实现用c语言 把01—32随机抽出7个数 然后不限制同一数的...
} if (data[j] != data[i]){ flag = 0;} else { flag = 1; \/\/数据相同。} } if (flag == 1){ i--; \/\/ 重新 rand 赋值 continue;} } 这样数组就建好了。(没有写main函数)如果你要 计算有多少组七位数, 我建议你直接使用排列组合计算一下好了。和随机数没有关系。

C语言 用随机函数rand生成一包含10个元素数组(100以内正整数),判断...
include <stdio.h>#include <stdlib.h>#include int main(){ int a[10]; int i; srand(time(NULL)); for(i = 0; i < 10; i ++) { a[i] = rand()%99+1; if(a[i] == 1) printf("1 不是素数\\n"); else { int k; for(k =2 ;...

C语言 实现模拟彩票的程序设计:随机产生7个数字(用C语言随机函数产生...
彩票摇奖机的模拟程序设计,使用结构体链表来实现,确保每次生成的随机数字序列都是唯一的。这种方法相较于数组更为高效,尤其是在删除元素时。我们定义了数组指针,并动态分配了内存空间。以下是程序的主要部分的代码改写:```c include include include typedef struct List { int number;struct List* ...

如何产生1000个从1到1000之间的不重复的随机数,用C语言实现!
若是使用rand()\/(RAND_MAX+1) 则可得到集合[0,1)中的随机数 1000 * rand()\/(RAND_MAX+1)可产生[0,1000),取整则是[0,999]中的随机数*\/ j=0;for(;j=i) { a[j] = flag;i++;} } for(int k=0;k<N;k++)printf("%5d",a[k]);} 上面这个程序完全可以产生从1-1000的随机...

C语言:随机生成100个数,要求分成两组,一组50个数,让这两组的和相差尽 ...
include<stdio.h> include<stdlib.h> include \/\/***产生长度为length的不为0的可重复随机数组***\/\/ void radomArray(int *array,int length){ srand((unsigned)time(NULL));\/\/使用系统时间作为随机数的种子产生随机数 int i=0,j=0;while(j<length){ i=rand()%1000;\/\/0-1000的随机数,...

如何用c语言实现:定义一个1~100的int数组,随机从里边选择十个数字?_百 ...
printf("1,输入数组\\n""2,插入数据\\n""3,显示数组\\n""4,删除数据\\n""5,数组排序\\n""0,退出\\n");scanf("%d",&m);switch(m){ case 1:input(a,&n);display(a,&n);break;case 2:insert(a,&n);display(a,&n);break;case 3:display(a,&n);break;case 4:delet(a,&n);dis...

C语言如何从0-9产生4个不重复的随机数
利用空间换时间的策略,用flag数组保证了数字不会重复,避免每次产生的随机数都要遍历一遍数组以避免重复的问题。而且通过时间作为种子,避免每次的随机数都一样!include<stdio.h> include<stdlib.h> include void main(){ int aim[4],flag[10]={0};srand(time(NULL));for(int i=0;i<4;i++...

c语言随机产生100个数为二维数组,求出数组位置和最大值
j++) { b[i][j]= rand()%90+10; printf("b[%d][%d]=%d\\n", i,j, b[i][j]); } } \/\/先产生100个随机数再赋值给数组 max=b[0][0];mi=0;mj=0; for(i=0;i<10;i++) { for(