C语言中的随机函数rand()

#if 1
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	int nRandNumber[10];
	for (int idx = 0; idx < 10; ++idx)
	{
		nRandNumber[idx] = rand();//取随机数范围为integer 0 ~ RAND_MAX(32767)
		cout << nRandNumber[idx] << endl;
	}
	for (int idx = 0; idx < 10; ++idx)
	{
		nRandNumber[idx] = (double)rand() / (RAND_MAX + 1) * (125 - 35) + 35;//取数35到125之间
		cout << nRandNumber[idx] << endl;
	}
	cout << RAND_MAX << endl;//最大值是32767

	
	//srand是一个随机数种子产生函数,当参数为1时,所得到的随机数序列一样
	//output : nRanNum1 : 41 nRanNum2 : 18467
	//		   nRanNum3 : 41 nRanNum4 : 18467
	ofstream outFile("d:\out.txt");

	srand(1);
	int nRanNum1 = rand();
	int nRanNum2 = rand();

	cout << "nRanNum1 : " << nRanNum1 << " nRanNum2 : " << nRanNum2 << endl;
	
	outFile << "nRanNum1 : " << nRanNum1 << " nRanNum2 : " << nRanNum2 << endl;
	srand(1);
	int nRanNum3 = rand();
	int nRanNum4 = rand();
	cout << "nRanNum3 : " << nRanNum3 << " nRanNum4 : " << nRanNum4 << endl;
	outFile << "nRanNum3 : " << nRanNum3 << " nRanNum4 : " << nRanNum4 << endl;
	
	system("pause");
	return 1;
	
}
#endif

### C语言中的随机函数及其用法 在C语言中,`rand()` 和 `srand()` 是两个常用的函数用于生成伪随机数。以下是关于这两个函数的具体说明以及如何正确使用它们。 #### 函数定义 - **`rand()`**: 这是一个返回整数值的函数,它生成一个介于0到`RAND_MAX`之间的伪随机数[^1]。`RAND_MAX` 的具体值依赖于实现,默认情况下通常是32767。 - **`srand(unsigned int seed)`**: 该函数用来初始化随机数发生器的状态。通过传递不同的种子值给`srand()`可以改变后续调用`rand()`所产生的序列[^3]。 #### 使用方法 为了获得更加不可预测的结果,在实际应用中通常结合当前时间作为参数传入`srand()`来进行初始化操作: ```c #include <stdio.h> #include <stdlib.h> // 包含转换和存储头文件 #include <time.h> // 包含日期和时间处理头文件 int main(){ srand((unsigned) time(NULL)); // 设置初始种子为系统当前秒数 for(int i=0;i<5;i++){ printf("%d ", rand()%10); // 输出五个0~9之间的小随机数 } return 0; } ``` 上述例子展示了如何利用标准库中的 `<time.h>` 头文件获取当前的时间戳,并将其转化为无符号整形变量赋值给`srand()`完成初始化工作;之后循环五次分别打印出不同余数运算后的结果表示限定范围内的一系列随机数字[^4]。 需要注意的是如果不先执行一次`srand()`就连续多次调用`rand()`的话,则由于默认状态下所有进程共享同一个固定的起始状态所以很可能得到完全一致的数据流。 #### 注意事项 当需要特定区间内的随机数时,可以通过简单的算术表达式调整原始输出值域。比如要取得[a,b]闭区间的任意正整型数据就可以采用如下方式计算目标数值n=(a+(rand()%(b-a+1)))[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值