C语言随机生成数有哪些方法
时间: 2023-11-02 16:37:29 浏览: 233
1. 使用rand()函数生成随机数。该函数可以生成一个范围在0到RAND_MAX之间的随机整数。可以通过调用srand()函数设置随机数生成器的种子,以控制随机数的生成。
2. 使用time()函数获取当前时间戳,然后将时间戳作为种子调用srand()函数,生成伪随机数。
3. 使用random()函数生成随机数。该函数可以生成一个范围在0到RAND_MAX之间的随机整数。可以通过调用srandom()函数设置随机数生成器的种子,以控制随机数的生成。
4. 使用arc4random()函数生成随机数。该函数可以生成一个范围在0到RAND_MAX之间的随机整数,且具有较好的随机性。可以通过调用arc4random_stir()函数设置随机数生成器的状态,以控制随机数的生成。
相关问题
c语言代码实现随机一个加权图的建立和prim算法求最小生成树
以下是使用 C 语言实现随机一个加权图的建立和 Prim 算法求最小生成树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#define MAX_VERTICES 100
#define INF INT_MAX
int n; // 图的顶点数
int dist[MAX_VERTICES]; // 存放从已经包含在最小生成树中的顶点到其它顶点的最短距离
int visited[MAX_VERTICES]; // 标记顶点是否已经包含在最小生成树中
int graph[MAX_VERTICES][MAX_VERTICES]; // 存放图的邻接矩阵
void prim(int start) {
int i, j, k;
int min;
int u;
// 初始化
for (i = 0; i < n; i++) {
dist[i] = INF;
visited[i] = 0;
}
dist[start] = 0;
for (i = 0; i < n; i++) {
min = INF;
for (j = 0; j < n; j++) {
if (!visited[j] && dist[j] < min) {
min = dist[j];
u = j;
}
}
visited[u] = 1;
for (k = 0; k < n; k++) {
if (!visited[k] && graph[u][k] < dist[k]) {
dist[k] = graph[u][k];
}
}
}
}
int main() {
int i, j;
// 读入图的顶点数和边数
int m;
printf("Enter the number of vertices: ");
scanf("%d", &n);
printf("Enter the number of edges: ");
scanf("%d", &m);
// 初始化随机数种子
srand(time(NULL));
// 随机生成边并更新邻接矩阵
int u, v, w;
for (i = 0; i < m; i++) {
u = rand() % n;
v = rand() % n;
w = rand() % 100 + 1;
if (u != v && graph[u][v] == INF) {
graph[u][v] = w;
graph[v][u] = w;
} else {
i--;
}
}
// 调用 Prim 算法求最小生成树
prim(0);
// 输出最小生成树的边权和
int sum = 0;
for (i = 0; i < n; i++) {
sum += dist[i];
}
printf("The weight of the minimum spanning tree is %d.\n", sum);
return 0;
}
```
在上述代码中,我们首先读入图的顶点数和边数,然后初始化随机数种子。接着,我们使用 `rand()` 函数随机生成边并更新邻接矩阵,其中边的权值为 1 到 100 之间的随机整数。由于是无向图,所以需要更新两个顶点之间的邻接关系。如果生成的边已经存在或者是自环边,则需要重新生成,直到生成一条新的边为止。最后,调用 `prim()` 函数求最小生成树,并输出最小生成树的边权和。
c语言雪景圣诞树代码
以下是C语言实现雪景圣诞树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, j, k, n;
srand((unsigned)time(NULL));
n = rand() % 10 + 10; // 随机生成树的高度
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n - i; j++)
{
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k++)
{
printf("*");
}
printf("\n");
}
for (i = 1; i <= 2; i++)
{
for (j = 1; j <= n - 2; j++)
{
printf(" ");
}
printf("***\n");
}
return 0;
}
```
阅读全文