c语言随机分配,随机分配函数

本文目录一览:

C语言怎么实现随机分配?

srand(

(unsigned)time(

NULL

)

);

;

num=rand()%k;

用这个生成随机数你应该会吧

然后给6个长方形每个一个随机数,排序,然后将较大的2个一组,较小的2个一组,中间2个一组

也可以给每个方块一个0-2的随机数,同时在生成随机的时候加特判,如果对应数字的组里满了就重作随机

由于方块数少,不用太在乎算法时间复杂度

C语言随机分配的问题。有1000个file, 每个file复制成10份,然后随机分配给1000个人 如何实现

1000个文件,我们给它编号成 0,1,2,到 999

复制成10份,也就是 0,1,2,到 999 每个号码 重复 10 次。

把它们 放到数组中 int file_number[1000][10];

然后我们用洗牌的方法,把 file_number[t1][t2] 和 file_number[t3][t4]; 里的 文件号码 交换。

t1,t2,t3,t4 是随机数。洗它10 万次,估计分布就很随机了。

然后依次发给1000人,每人id 得 file_number[id][i] , i=0,1,…9.

==========

#includestdio.h

#includestdlib.h

#includemath.h

#includetime.h

int file_number[1000][10]; //大数组,用全局量

main()

{

int t1,t2,t3,t4,t;

int i,j,n=1000;

for (j=0;j1000;j++) for (i=0;i10;i++) file_number[j][i]=j; //初始文件号

srand(time(0)); //随机种子

for (i=0;i100;i++)

for (j=0;j1000;j++){

t1=rand()%1000; t2 = rand()%10; //随机下标

t3=rand()%1000; t4 = rand()%10; //随机下标

t = file_number[t1][t2]; // 交换

file_number[t1][t2]= file_number[t3][t4]; // 交换

file_number[t3][t4] =t; // 交换

}

n=10; // 输出前10人的文件号码看看

for (j=0;jn;j++){

printf(“pernal_id=%d File_numbers:”,j);

for (i=0;i10;i++) printf(“%d “,file_number[j][i]);

printf(“\n”);

}

return 0;

}

C语言中的 malloc,calloc函数分配存储空间是随机的吗?

是的,malloc和calloc函数都是向内存申请一定大小的空间,如果内存分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。

如何用c语言将100个女生随机分为50组

以下程序供你参考

以下函数通过系统时间随机生成1-100之间的随机数,分成两组后使其总和差值最小。

算法分析:见源程序中的注释,算法可能有些许额误差,共参考。

#includestdio.h

#includestdlib.h

#includetime.h

//******************产生长度为length的不为0的可重复随机数组******************//

void radomArray(int *array,int length)

{

srand((unsigned)time(NULL));//使用系统时间作为随机数的种子产生随机数

int i=0,j=0;

while(jlength)

{

i=rand()%100;//0-100的随机数,可做修改

if(i!=0)//随机数不为0

{

array[j]=i;

j++;

}

}

}

//******************给数组排序,从大到小******************//

void sequence(int * array,int len)

{

int tmp=0;

for(int m=0;mlen;m++)

{

for(int n=0;nlen;n++)

{

if(array[m]array[n])

{

tmp=array[n];array[n]=array[m];array[m]=tmp;

}

else continue;

}

}

}

//******************将数组拆分为长度为len_01和长度为len_02的两列并总和差值最小******************//

/*算法分析:将有序数组(大到小)中数据依次分别放入数组1、数组2中,并分别统计其现有数据的总和,分别存入dat_01,dat_02中,

初始化判断标准dat_01,dat_02为0;

根据数组现有数据总和dat_01和dat_02的关系,确定数据存入数组1还是数组2。

判断过程:如果数组1现有数据总和小于数组2,同时数组1未到上限,将下一个数据存入数组1;

如果数组1现有数据综合不小于数组2,同时数组2未到上限,将下一个数据存入数组2。

可能漏洞:数组1或数组2提前到达数组上限,导致原数组中剩余数据直接转入另一数组中,出现异常结果。*/

void seperate(int *arr,int * arr_01,int *arr_02,int len_01,int len_02)

{

int i=0,j=0,dat_01=0,dat_02=0;

for(int k=0;klen_01+len_02;k++)

{

if(dat_01dat_02ilen_01)//如果数组1数据总和小于数组2,同时数组1未到上限,将下一个数据存入数组1

{

arr_01[i]=arr[k];

dat_01+=arr[k];

i++;

}

else if(dat_01=dat_02jlen_02)//如果数组1数据不小于数组2,同时数组2未到上限,将下一个数据存入数

组2

{

arr_02[j]=arr[k];

dat_02+=arr[k];

j++;

}

}

}

//******************计算并返回长度为length的数组的数字总和******************//

int sum(int a[],int length)

{

int total=0;

for(int i=0;ilength;i++)

{

total+=a[i];

}

return total;

}

//******************主函数开始******************//

void main()

{

int data1=0,data2=0,tmp=0;

int len=100,len_01=50,len_02=50;//修改此处len,len_01,len_02即可修改初始数组长度,注意len_01+len_02=len,同

时最好len_01=len_02,防止出现异常。

int data[100],data_1[50],data_2[50];//上述len,len_01,len_02修改后,此处数组长度应相应修改。

radomArray(data,len);//产生100个数据的随机数组

sequence(data,len);//给随机数组从小到大排序

printf(“产生的随机数组从小到大排列为:\n”);

for(tmp=0;tmplen;tmp++)//输出随机数组

printf(“%d\t”,data[tmp]);

printf(“\n”);

seperate(data,data_1,data_2,len_01,len_02);//将数组分为两块,使其总和差值最小

printf(“第一块数组为:\n”);

for(tmp=0;tmplen_01;tmp++)

{

printf(“%d\t”,data_1[tmp]);

}

printf(“\n”);

printf(“第二块数组为:\n”);

for(tmp=0;tmplen_02;tmp++)

{

printf(“%d\t”,data_2[tmp]);

}

printf(“\n”);

printf(“最原始数组的数据总和为:%d\n”,sum(data,len));

printf(“拆分后数组的数据总和为:%d\n”,sum(data_1,len_01)+sum(data_2,len_02));

printf(“第一块数组的数据总和为:%d\n”,sum(data_1,len_01));

printf(“第二块数组的数据总和为:%d\n”,sum(data_2,len_02));

printf(“两块数组数据的的差值为:%d\n”,sum(data_1,len_01)-sum(data_2,len_02));

}

运行结果:

产生的随机数组从小到大排列为:

993 979 970 962 957 935 914 902 888 883

871 866 862 859 843 840 829 827 824 815

810 808 805 796 784 768 738 730 725 722

721 712 711 709 704 702 693 670 670 650

631 627 623 623 614 607 606 598 577 574

547 498 495 495 481 478 451 448 447 429

410 388 383 381 380 379 377 364 344 337

308 271 266 257 233 208 204 200 189 165

162 155 150 145 143 119 117 114 114 110

108 69 64 61 48 45 22 16 11 3

第一块数组为:

979 970 957 902 883 871 859 840 829 815

810 805 768 738 725 721 709 702 670 670

631 623 607 606 574 498 495 481 451 447

410 383 379 377 337 271 266 233 200 189

155 145 119 117 114 108 61 45 11 3

第二块数组为:

993 962 935 914 888 866 862 843 827 824

808 796 784 730 722 712 711 704 693 650

627 623 614 598 577 547 495 478 448 429

388 381 380 364 344 308 257 208 204 165

162 150 143 114 110 69 64 48 22 16

最原始数组的数据总和为:51116

拆分后数组的数据总和为:51116

第一块数组的数据总和为:25559

第二块数组的数据总和为:25557

两块数组数据的的差值为:2

Press any key to continue

如何使用c语言对数据随机分组?

#include stdio.h

#include stdlib.h 

#include time.h 

int main()

{

int a[50]; //存放50个球

int i,cnt;

for( i=0;i50;i++ ) //标号

a[i]=i+1 ;

cnt=0;

srand( time(NULL) ) ;

while( cnt  25 ) //随机取25个

{

i=rand()%50 ;

if ( a[i] != 0 )//防止重复计数

{

cnt++ ;

a[i]=0 ;//标记为已取

}

}

//以下为输出分组结果

printf(“array 1:\n” );

cnt=0;

for( i=0;i50;i++ )

{

if ( a[i] == 0 )

{

cnt++ ;

printf(“%3d”, i+1 );

if ( cnt % 5 == 0 ) //每输出5个一换行

printf(“\n”);

}

}

printf(“\n”);

printf(“array 2:\n” );

for( i=0;i50;i++ )

{

if ( a[i] )

{

cnt++ ;

printf(“%3d”, a[i] );

if ( cnt % 5 == 0 )

printf(“\n”);

}

}

printf(“\n”);

return 0;

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/248064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:25
下一篇 2024-12-12 13:25

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python实现计算阶乘的函数

    本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。 一、什么是阶乘 阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = …

    编程 2025-04-29

发表回复

登录后才能评论