更好的或取随机数

本文介绍了一个简单的JavaScript函数GetRandomNum,用于生成指定范围内的随机整数,并展示了一个生成唯一订单号的方法CreateSN,确保了订单号的唯一性和时效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Min参数->最小值
Max参数->最大值
输入参数GetRandomNum(最小值,最大值),获取最大值最小值之间的随机数(包含最大值最小值)

//取随机数.
    var GetRandomNum= function (Min,Max)
    {   
        var Range = Max - Min;   
        var Rand = Math.random();   
        return(Min + Math.round(Rand * Range));   
    }  

    console.log(GetRandomNum(100,200));//产生100-200之间随机数

生成类似订单号型的随机订单(不能重复)

    //ProjectID为订单前缀
    var CreateSN=function(ProjectID){
        var id= ProjectID.toString()+new Date().getTime()
        +TSS.UUID.GetRandomNum(1000,9999)
        //查重
        // while(!CheckPayID(id)){
        //     this.CreateSN();
        // }
        return  id;
    }
    //var CheckPayID=function(id){
        //var res = "数据库查重"
        //if (res.MessageCode>0){
            //return false
        //}
        //return true;
    //}
    console.log("随机生成订单号-----"+TSS.SN.CreateSN("T"));       
### C++ 中生成随机数的方法 在 C++ 中,可以通过 `<cstdlib>` 者更现代的 `<random>` 头文件来实现随机数的生成。以下是几种常见的方法及其示例: #### 方法一:使用 `rand()` 和 `srand()` 这是传统的 C 风格随机数生成方式,虽然简单易用,但在某些情况下可能不够灵活。 ```cpp #include <iostream> #include <cstdlib> // rand(), srand() #include <ctime> // time() int main() { std::srand(std::time(nullptr)); // 设置随机种子 int random_number = std::rand() % 100; // 生成 0 到 99 的随机数 std::cout << "Random number: " << random_number << std::endl; return 0; } ``` 这种方法依赖于全局状态管理随机数序列,因此不推荐用于复杂场景[^1]。 --- #### 方法二:使用 `<random>` 库中的 `std::default_random_engine` 和分布类 这是一种更为现代化的方式,提供了更高的灵活性和更好的统计特性。 ```cpp #include <iostream> #include <random> int main() { std::default_random_engine engine(std::random_device{}()); std::uniform_int_distribution<int> distribution(0, 99); // 定义范围 [0, 99] int random_number = distribution(engine); std::cout << "Random number: " << random_number << std::endl; return 0; } ``` 此方法通过分离随机数引擎和分布逻辑,使得代码更加模块化且易于维护[^2]。 --- #### 方法三:使用 `std::mt19937`(Mersenne Twister 引擎) `std::mt19937` 是一种高效的伪随机数生成器,适用于大多数应用场景。 ```cpp #include <iostream> #include <random> int main() { std::random_device rd; // 真随机数生成器 std::mt19937 generator(rd()); // 初始化 Mersenne Twister 引擎 std::uniform_int_distribution<> dist(0, 99); int random_number = dist(generator); std::cout << "Random number: " << random_number << std::endl; return 0; } ``` 这种组合能够提供高质量的随机数,并支持较大的数值范围[^3]。 --- #### 方法四:基于时间戳初始化随机数种子 可以结合当前时间作为种子值,从而减少重复的概率。 ```cpp #include <iostream> #include <random> #include <ctime> int main() { unsigned seed = static_cast<unsigned>(std::time(0)); std::default_random_engine engine(seed); std::uniform_int_distribution<int> distribution(0, 99); int random_number = distribution(engine); std::cout << "Random number: " << random_number << std::endl; return 0; } ``` 这种方式特别适合需要动态变化的应用场合[^4]。 --- #### 方法五:使用 `bernoulli_distribution` 生成布尔型随机变量 如果目标是生成具有特定概率的布尔值,则可以选择如下方案: ```cpp #include <iostream> #include <random> int main() { std::random_device rd; std::mt19937 gen(rd()); double probability = 0.7; // 设定 True 出现的概率为 70% std::bernoulli_distribution distr(probability); bool result = distr(gen); std::cout << "Boolean Random Value: " << (result ? "True" : "False") << std::endl; return 0; } ``` 这允许开发者精确控制事件发生的可能性[^2]。 --- ### 总结 以上介绍了五种不同的 C++ 随机数生成技术,每种都有各自的特点与适用领域。对于新项目而言,建议优先考虑采用 `<random>` 头文件下的工具集,因为它们不仅功能强大而且设计优雅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值