c语言从一个数组中随机取数并放入另一个数组中怎么写?

如题所述

要从一个数组中随机抽取元素放入另一个数组,需遵循以下步骤。假设数组 arrSource 包含元素 a, c, b, d,目标数组为 arrDest,长度为 3。

首先,使用 rand() 函数生成随机下标,范围为 0 到 3。取生成的随机数 mod 4,以确保结果在 0 到 3 之间。设此下标为 index,数组元素为 pick,即 pick = arrSource[index]。

接着,将 arrSource[index] 与 arrSource 的最后一个元素进行交换。这样,数组的前三个元素都未被选中。

再次生成新的随机下标,范围为 0 到 2。取生成的随机数 mod 3,确保结果在 0 到 2 之间。设此下标为 index,重复上一步骤,获得新的 pick。

交换 arrSource[index] 与 arrSource 的倒数第二个元素。现在,数组的前两个元素未被选中。

依此类推,直到完成所有元素抽取。为简化过程,可定义一个计数器变量,每次交换后递减,避免重复操作。

整个过程可放入循环中,循环次数等于目标数组长度。对于每一个抽取步骤,更新目标数组 arrDest 的对应位置,将 pick 放入其中。

若对操作步骤不理解,可直接提问,将得到详细的解答。
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言从一个数组中随机取数并放入另一个数组中怎么写?
要从一个数组中随机抽取元素放入另一个数组,需遵循以下步骤。假设数组 arrSource 包含元素 a, c, b, d,目标数组为 arrDest,长度为 3。首先,使用 rand() 函数生成随机下标,范围为 0 到 3。取生成的随机数 mod 4,以确保结果在 0 到 3 之间。设此下标为 index,数组元素为 pick,即 pic...

C语言如何把一个数组内的某个部分,拷贝至另一个数组(C Primer Plus 10...
接着,定义包含源数组和目的数组的函数。源数组包含7个元素,而目的数组包含3个元素。通过调用上述拷贝函数,将源数组中第3到第5个元素(索引为2到4)拷贝至目的数组。c int main() { int source[7] = {1, 2, 3, 4, 5, 6, 7};int dest[3];copyArrayPart(source, dest, 2, 5);\/\/...

用C语言编写一个程序,将一个数组中的元素复制到另一个数组中?
int i, array1[5], array2[5];printf("请输入第一个数组:");for(i=0; i<5; i++)scanf("%d", &array1[i]);printf("\\n第二个数组:");for(i=0; i<5; i++){ array2[i] = array1[i];printf("%d ", array2[i]);} return 0;} ...

c语言中怎么把一个数组的值赋到另一个数组中?
void fun1(double str1[],int length) { int i, j;double temp;for(i = 0; i < length; ++i) { for(j = length - 1; j > i; --j) { if(str1[j] > str1[j - 1]) { temp = str1[j];str1[j] = str1[j - 1];str1[j - 1] = temp;} } } for(i = 0;...

c语言生成0到9不重复的随机数存到二维数组中
num>0) \/\/循环次数{for(i=0;i<10;i++) \/\/获取一行10个数{while(1) \/\/每次随机获取一个数{t=rand()%10;if(i==0){a[i]=t;break;}if(is_same(a,i,t)==0) \/\/必须不相同才能获取一行的下一个数{a[i]=t;break;}}printf("%d ",t);...

C语言中如何把符合要求的数放到另一个数组中?
定义三个数组a[],b[],c[]。第一个a[]用来存放你输出的20个数字,后两个一个b[]存放奇数一个c[]存放偶数。首先要按照顺序读取a[]中这20个数字,然后进行判断,如果能被2整除那么就放进c[],如果不能被2整除就放入b[]。直到20个数都完成,然后做一个冒泡的排序或者选择排序,再对b[],c[...

将一个数组倒装入另一个数组中,用指针的c语言程序
data2[size-i-1] = *p;p++;} } int main(void){ int data1[5] = {1,2,3,4,5};int data2[3] = {0};int i = 0;if(sizeof(data1) < sizeof(data2))fun(data1,data2,sizeof(data1)\/4);else printf("目标数组内存长度不够\\n");\/\/输出数组 for(i = 0;i < sizeof...

如何用C语言实现 从指定的几个数中随机抽出一个数。这几个数不是连续...
M是指定的数的个数,nums[]存放需要的数 include <stdio.h> include include <stdlib.h> define M 10 int main(){ int nums[M] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};srand((unsigned)time(0));printf("%d\\n", nums[rand()%M]);} ...

C语言中如何把一个数组的值赋给另一个数组 急!!!
第一个问题,用FOR循环吧第一个数组的值 给第二个,第二个问题,可以,完全可以,第一个矩阵刚好是第二个的转制矩阵,当然可以了。

c语言实现从一个数组中随机抽取一个元素
随机产生一个数,然后每次将数组元素的最后一个数与这个数交换,并且数组的长度减1。代码如下:include<stdio.h> include<stdlib.h> define N 100 int main(){ int a[N];int i,t,tag;for(i=0;i<N;i++)a[i] = i;tag = N-1;while(tag){ i = rand()%tag;t = a[i];a[i] ...

相似回答
大家正在搜