c语言生成随机数算法
时间: 2023-11-10 11:57:11 浏览: 45
C语言生成随机数的算法主要涉及到三个函数:rand、srand和time。rand函数用于生成一个伪随机数,其返回值是一个介于0和RAND_MAX之间的整数。srand函数用于设置随机数的种子,可以通过将其参数设置为time(NULL)来使用当前时间作为种子。time函数用于获取当前的系统时间。通过结合这三个函数,可以实现生成随机数的功能。
下面是一个生成范围随机数的示例代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() {
srand((unsigned int)time(NULL));
int ret = rand() % 100 + 1; // 生成1~100的随机数
printf("%d\n", ret);
return 0;
}
在上述代码中,先使用srand函数设置随机数的种子,然后使用rand函数生成一个介于0和RAND_MAX之间的随机数。为了生成指定范围内的随机数,可以使用取余运算符%和加法运算符+。例如,rand() % 100表示生成0~99之间的随机数,再加1则表示生成1~100之间的随机数。
相关问题
c语言生成随机数并存入数组
可以使用C语言的rand()函数生成随机数,再将其存入数组中。具体实现步骤如下:
1. 使用srand()函数来初始化随机数种子,可以使用time()函数获取当前时间作为种子,确保每次生成的随机数不同。
2. 使用rand()函数生成随机数,并将其存入数组中,可以使用循环语句来重复执行生成随机数和存入数组的操作。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, n;
int arr[10];
// 初始化随机数种子
srand(time(NULL));
// 生成随机数并存入数组
for (i = 0; i < 10; i++) {
arr[i] = rand();
}
// 输出数组中的随机数
for (i = 0; i < 10; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
```
注意:生成的随机数是伪随机数,其结果是可预测的,如果需要更高强度的随机数,可以使用其他的随机数生成算法。
c语言按概率生成随机数
C语言中可以使用rand()函数来生成随机数,但是这个函数生成的随机数并不是真正的随机数,而是伪随机数,因为它是根据一个固定的种子值来生成的。
要按概率生成随机数,需要使用一些概率分布函数,比如均匀分布、正态分布等。具体实现可以使用C语言中的math库中的函数,比如rand()和srand()函数来生成随机数的种子,以及使用rand()函数和一些算法来生成符合特定概率分布的随机数。
以下是一个例子,演示如何按照均匀分布生成随机数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, num;
float r;
// 设置随机数种子
srand(time(0));
// 生成10个在0-1之间的随机数
for(i=0; i<10; i++)
{
r = (float)rand() / RAND_MAX;
printf("%f\n", r);
}
return 0;
}
```
在这个例子中,srand()函数用来设置随机数种子,time(0)获取当前时间作为种子值。生成随机数时,先使用rand()函数获取一个随机数,再除以RAND_MAX得到0-1之间的随机数。循环10次,每次生成一个随机数并输出。