C/C++随机数的生成--从<cstdlib>到<random>

本文介绍了C语言中通过<cstdlib>库生成随机数的基本方法,虽然简单但不够理想。接着转向C++11的<random>库,利用随机数引擎和分布类型实现更高效、可控的随机数生成,包括如何使用不同分布类型的示例和优势。
摘要由CSDN通过智能技术生成

C随机数

最常用的随机数获得还是从C那里那里的一套 srand() rand() ,通过随机数种子用随意的数字或者时间来获得伪随机数

#include<cstdio>
//#include<stdio.h>两行预处理代码相同
#include<ctime>
//#include<time.h>获得时间函数的头文件
#include<cstdlib>
//#include<stdlib.h>获得随机数函数头文件
int main(){
   
    int range;//自定义上限
    srand(unsigned(time(NULL)));//设置随机数种子,通常用 time 函数生成
//种子或许换一个词更好理解:初始推导值(毕竟随机数用算法或函数产生)
//使用 time 函数生成种子的最大有点是保证了每个种子不同,不会得到相同的序列
//不过也可以随意用一个 unsigned int 类型的数去设置
    printf("%d\n",rand()%(range+1));
}

这就是最基础的,也是最常用的C/C++获得随机数的方法,比较古老,优缺点也都体现在这一点上了。因为老,所以编译所需要的版本可以很低,而且这份代码在低版本的环境下也都可以运行,但是不是真正的那么随机。还有一点就是只能产生整数随机数。

有兴趣的话,也可以自己写一些产生伪随机数的公式去获得随机数,这样可以减少编译时间,也减少文件大小
下面就举一个例子,采用公式为 x i + 1 = R x i ∗ ( 1 − x i ) x_{i+1}=Rx_i*(1-x_i) xi+1=Rx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值