c++数组乱序c++产生随机数
时间: 2023-11-16 19:06:01 浏览: 119
C语言/C++中如何产生随机数
5星 · 资源好评率100%
c 数组乱序可以通过生成随机数来实现。常用的算法是使用Fisher-Yates算法(也称为Knuth-Durstenfeld Shuffle算法)。该算法的基本原理是从数组的最后一个元素开始,每次随机选择一个索引,然后将该索引对应的元素与当前位置的元素进行交换。然后继续从剩下的元素中选择一个索引,重复这个过程,直到数组中的所有元素都被遍历一次。这样就完成了数组的乱序。
以下是c语言实现乱序算法的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int a[], int n) {
srand(time(NULL));
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1);
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a) / sizeof(a[0]);
shuffle(a, n);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
这段代码中,我们使用srand函数以系统时间作为种子来初始化随机数生成器。然后通过rand函数生成一个介于0和i之间的随机索引j。然后将a[i]与a[j]进行交换。重复这个过程,直到所有的元素都被遍历一次。
阅读全文