c语言随机数生成 不重复
时间: 2023-11-07 22:56:53 浏览: 250
可以使用洗牌算法生成不重复的随机数,具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int *arr, int size) {
srand(time(NULL));
for (int i = size - 1; i >= 1; i--) {
int j = rand() % (i + 1);
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
int main() {
int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
shuffle(arr, 10);
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序可以生成0到9不重复的随机数序列,可以根据需要修改数组长度和元素值范围。
相关问题
给出以系统时间作为种子且不使用任何头文件的C语言随机数生成函数
以下是一个以系统时间作为种子且不使用任何头文件的C语言随机数生成函数的示例代码:
```c
// 定义一个全局变量用于保存种子值
unsigned int seed = 0;
// 获取系统时间的函数
unsigned int getTime() {
unsigned int time = 0;
// 通过汇编嵌入获取系统时间
asm volatile("rdtsc" : "=a"(time));
return time;
}
// 生成随机数的函数
int generateRandomNumber() {
// 使用系统时间作为种子
if (seed == 0) {
seed = getTime();
}
// 线性同余法生成伪随机数
seed = (seed * 1103515245 + 12345) % (1 << 31);
return seed;
}
int main() {
int random_num = generateRandomNumber();
// 打印随机数
printf("Random number: %d\n", random_num);
return 0;
}
```
在上面的示例中,我们定义了一个全局变量 `seed` 来保存种子值。然后,我们使用 `getTime()` 函数获取系统时间,并将其作为种子值。
接下来,我们使用线性同余法生成伪随机数。具体而言,我们使用公式 `seed = (seed * 1103515245 + 12345) % (1 << 31)` 来更新种子值,并返回该值作为生成的随机数。
在 `main()` 函数中,我们调用 `generateRandomNumber()` 函数来生成随机数,并将其赋值给 `random_num` 变量。最后,我们使用 `printf` 函数打印出生成的随机数。
请注意,由于这是一个简单的示例,使用的是伪随机数生成算法,并且没有考虑到种子的周期性和重复性问题。如果需要更强大和高质量的随机数生成,请考虑使用标准库提供的函数,如前面示例中所示。
C语言生成不重复随机数
以下是C语言生成不重复随机数的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main() {
int a_max, a_min, n;
printf("请输入这组随机数最大值:");
scanf("%d", &a_max);
printf("请输入这组随机数最小值:");
scanf("%d", &a_min);
n = a_max - a_min + 1;
int a[n], m, i, j;
srand(time(NULL));
a[0] = rand() % n + a_min;
for (i = 1; i < n; i++) {
while (1) {
int s = 0;
m = rand() % n + a_min;
for (j = 0; j < i; j++) {
if (m == a[j]) s = 1;
}
if (s == 0) break;
}
a[i] = m;
}
for (i = 0; i < n; i++) {
printf("%d\n", a[i]);
}
}
```
该代码使用了C语言的rand()函数生成随机数,并通过循环判断是否重复,保证了生成的随机数不重复。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)