获取指定范围内的随机数

随机数分为真随机数和伪随机数。真随机数基于物理现象如CPU频率波动和声卡噪声生成,主要用于密码学。伪随机数则由确定性算法和种子(如系统时间)产生,具有统计上的随机性,广泛用于各种计算模拟。C语言中,`rand()`函数结合`srand()`可生成指定范围内的伪随机数。
摘要由CSDN通过智能技术生成
基础知识

随机数,按应用范围大致分为真随机数伪随机数两种;
其中,真随机数是基于物理现象产生的,比如日常中的抛硬币、掷骰子等,放到计算机场景下,可以是获取cpu频率与温度的不确定性、声卡的底噪等,因为获取方式复杂,所以只在密码学等特殊场景使用;伪随机数,本质是依赖于统计学伪随机性;

伪随机数具有以下特点:

  1. 具有类似真随机数的统计特征,如均匀性等;
  2. 使用确定性的算法计算得到的服从[0,1]均匀分布的随机数序列;
  3. 计算过程依赖初值(种子),常使用系统时间替代;
示例代码
/*
    描述:
        获取[0, RAND_MAX]范围内的伪随机数
*/
int create_rand_number()
{
    srand(time(NULL));
    return rand();
}

/*
    描述:
        获取[left, right]范围内的伪随机数,这种基于比例的生成方式,可以避开RAND_MAX限制
    参数:
        @param left  范围区间左边界
        @param right 范围区间右边界
*/
int create_rand_number_v2(int left, int right)
{
    int random_num = create_rand_number();
    double range_percent = 1.0 * random_num / RAND_MAX;
    double range_random_num = (right - left) * range_percent + left;
    return round(range_random_num);
}
参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值