C语言创建0-1之间的随机数
时间: 2023-08-01 12:10:29 浏览: 65
你可以使用 rand() 函数生成一个 0 到 RAND_MAX 之间的随机整数,然后将其除以 RAND_MAX 得到一个 0 到 1 之间的随机浮点数。示例代码如下:
```c
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 初始化随机数种子
double random = (double)rand() / RAND_MAX; // 生成 0 到 1 之间的随机数
return 0;
}
```
其中 srand() 函数用于初始化随机数种子,通常使用当前时间作为种子,以确保每次运行程序生成的随机数不同。
相关问题
C语言题目2 奇偶数分离 1. 问题描述 编写程序,产生100个0-200之间的随机数,在屏幕上显示出来,并将其中的奇数存储在odd.txt文件中,将偶数存储在even.txt文件中。 2. 代码(要求有注释)
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int num, i;
FILE *odd_file, *even_file; // 定义两个文件指针
// 随机数种子
srand((unsigned) time(NULL));
// 打开两个文件
odd_file = fopen("odd.txt", "w");
even_file = fopen("even.txt", "w");
// 产生100个随机数并分离奇偶数
for (i = 0; i < 100; i++) {
num = rand() % 201; // 产生0-200之间的随机数
if (num % 2 == 0) {
fprintf(even_file, "%d ", num); // 写入偶数文件
} else {
fprintf(odd_file, "%d ", num); // 写入奇数文件
}
printf("%d ", num); // 在屏幕上显示随机数
}
// 关闭文件
fclose(odd_file);
fclose(even_file);
return 0;
}
```
注释解析:
1. `srand((unsigned) time(NULL));`:根据当前时间初始化随机数种子,确保每次运行程序生成的随机数不同。
2. `odd_file = fopen("odd.txt", "w");`:以写入方式打开odd.txt文件,如果文件不存在则创建。
3. `even_file = fopen("even.txt", "w");`:以写入方式打开even.txt文件,如果文件不存在则创建。
4. `num = rand() % 201;`:生成0-200之间的随机数。
5. `if (num % 2 == 0) {...}`:判断num是否为偶数,如果是,则写入even.txt文件。
6. `else {...}`:否则,写入odd.txt文件。
7. `fclose(odd_file);`:关闭odd.txt文件。
8. `fclose(even_file);`:关闭even.txt文件。
用C语言创建一个顺序表并生成随机数进行排列
下面是一个简单的示例代码,用于创建一个顺序表并生成随机数进行排列。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 插入元素
int ListInsert(SeqList *L, int pos, int elem) {
int i;
if (pos < 1 || pos > L->length + 1) {
return 0;
}
if (L->length >= MAX_SIZE) {
return 0;
}
for (i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = elem;
L->length++;
return 1;
}
// 生成随机数
int Rand(int min, int max) {
return rand() % (max - min + 1) + min;
}
// 随机排列
void Randomize(SeqList *L) {
int i, j, temp;
srand(time(NULL));
for (i = L->length - 1; i >= 0; i--) {
j = Rand(0, i);
temp = L->data[i];
L->data[i] = L->data[j];
L->data[j] = temp;
}
}
// 打印顺序表
void PrintList(SeqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
int i, elem;
for (i = 1; i <= MAX_SIZE; i++) {
elem = Rand(1, 100);
ListInsert(&L, i, elem);
}
printf("Before randomize: ");
PrintList(L);
Randomize(&L);
printf("After randomize: ");
PrintList(L);
return 0;
}
```
代码中使用 `SeqList` 结构体来表示顺序表,包含一个数组 `data` 和一个长度 `length`。`InitList` 函数用于初始化顺序表,`ListInsert` 函数用于插入元素。`Rand` 函数用于生成指定范围内的随机数,`Randomize` 函数用于随机排列顺序表中的元素。最后在 `main` 函数中生成随机数并插入顺序表中,然后打印未排列前的顺序表,随机排列后再次打印顺序表。