c++生产随机长度的数组
时间: 2023-03-29 21:01:26 浏览: 101
你好,关于生产随机长度的数组,可以使用 C 语言中的 rand() 函数来生成随机数,再根据生成的随机数作为数组长度来动态分配内存空间,最后将随机生成的数值存储到数组中。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 生成随机数种子
srand((unsigned)time(NULL));
// 生成随机长度的数组
int len = rand() % 10 + 1; // 生成 1-10 之间的随机数
int *arr = (int *)malloc(len * sizeof(int)); // 动态分配内存空间
// 随机生成数组元素
for (int i = ; i < len; i++) {
arr[i] = rand() % 100; // 生成 -99 之间的随机数
}
// 输出数组元素
printf("随机生成的数组为:\n");
for (int i = ; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 释放内存空间
free(arr);
return ;
}
```
希望能够帮助到你,如果还有其他问题,欢迎继续提问。
相关问题
有c++写随机生成数组的,数组大小可为百万级,内部随机生成数字,数字不能有重复,数字的最大值与数组的大小一样
可以使用C++的标准库中的`random_shuffle`函数来实现。具体步骤如下:
1. 定义一个长度为n的数组a。
2. 将数组a初始化为0~n-1的连续整数。
3. 使用`random_device`或`time`函数生成一个随机种子,然后将种子作为参数传递给`mt19937`引擎来生成随机数。
4. 使用`shuffle`函数对数组a进行随机重排。
5. 将a中的数字作为下标,生成一个新的数组b,其中b[i]表示数字i是否在a中出现过。如果b[i]=1,则说明数字i已经在a中出现过,需要重新生成一个随机数。
6. 最后,将a中的数字复制到另一个数组中,即可得到一个不含重复数字的随机数组。
下面是实现代码:
```c++
#include <iostream>
#include <algorithm>
#include <random>
using namespace std;
int main()
{
const int n = 1000000;
int a[n], b[n] = {0};
// 初始化数组
for (int i = 0; i < n; i++)
a[i] = i;
// 随机种子
random_device rd;
mt19937 gen(rd());
// 随机重排
shuffle(a, a + n, gen);
// 判断数字是否重复
for (int i = 0; i < n; i++) {
if (b[a[i]] == 1) {
int j = uniform_int_distribution<int>(0, n-1)(gen);
while (b[j] == 1)
j = uniform_int_distribution<int>(0, n-1)(gen);
a[i] = j;
}
b[a[i]] = 1;
}
// 输出结果
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
```
该代码首先初始化一个长度为n的数组a,然后使用`shuffle`函数对其进行随机重排。接着,使用一个新的数组b来记录数字是否出现过,如果出现过就重新生成一个随机数。最后,输出结果即可。
用C++语言实现动态数组生成随机数组
可以使用C语言中的malloc函数动态分配数组空间,再使用rand函数生成随机数填充数组。具体实现代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int)); // 动态分配数组空间
srand(time(NULL)); // 初始化随机数种子
for (int i = ; i < n; i++)
{
arr[i] = rand() % 100; // 生成~99之间的随机数
}
printf("生成的随机数组为:\n");
for (int i = ; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放数组空间
return ;
}
```
阅读全文