在0-100中 随机取20个数字

本文介绍了如何使用Python的random模块生成0到100之间的20个随机整数,并展示了如何创建地球和月球上的重量列表,通过列表推导式进行数值计算。
import random  #在0-100中 随机取20个数字
a = [random.randint(0, 100) for i in range(20)]
print(a)

 

weight_list_earth = [float(weight) + w*0.5 for w in range(10) ]
weight_list_moon = [w * 0.165 for w in weight_list_earth ]
<think>我们被要求生成1到100之间随机整数。根据引用,C++中有多种方法:1.使用传统的rand()和srand()(引用[2]和引用[4])2.使用C++11的<random>库(引用[1]和引用[3])由于C++11的方法更现代且分布更均匀,推荐使用C++11的<random>库。具体步骤:方法1(C++11):a.包含头文件<random>b.创建一个随机数引擎(例如std::mt19937)c.创建一个分布对象,这里使用均匀整数分布std::uniform_int_distribution,并设置范围为1到100d.使用分布对象和引擎生成随机数方法2(传统方法):a.包含头文件<cstdlib>和<ctime>b.使用srand(time(NULL))初始化随机种子c.使用rand()生成随机数,并通过模和加法调整到1-100范围(例如:rand()%100+1)注意:传统方法生成的随机数质量较低,且模操作可能引入偏差(特别是当RAND_MAX不是100的倍数时)。因此,推荐使用C++11的方法。下面分别给出两种方法的代码示例。另外,引用[1]中提供了一个使用正态分布的例子,但我们需要的是均匀分布,所以使用均匀整数分布。根据引用[3],C++11的随机数生成更加灵活和安全。因此,我们将提供两种实现,并推荐使用C++11的方法。</think>### C++生成1到100随机数方法 在C++中生成1到100随机数有两种主流方法,推荐使用C++11的`<random>`库方法(质量更高): #### ✅ 推荐方法:C++11的`<random>`库(均匀分布) ```cpp #include <iostream> #include <random> // 核心头文件 int main() { // 1. 创建随机数引擎(使用Mersenne Twister算法) std::random_device rd; // 硬件熵源 std::mt19937 gen(rd()); // 用随机种子初始化引擎 // 2. 创建均匀整数分布 (1-100) std::uniform_int_distribution<> distrib(1, 100); // 3. 生成随机数 int random_num = distrib(gen); std::cout << "随机数: " << random_num; return 0; } ``` **优点**: - 真正均匀分布(无模运算偏差) - 线程安全 - 支持多种分布类型(正态/泊松等)[^3] #### ⚠️ 传统方法:`rand()`函数(不推荐) ```cpp #include <iostream> #include <cstdlib> // rand(), srand() #include <ctime> // time() int main() { // 1. 用当前时间初始化随机种子 srand(time(nullptr)); // 2. 生成1-100随机数 int random_num = rand() % 100 + 1; std::cout << "随机数: " << random_num; return 0; } ``` **缺点**: - 存在模偏差(分布不均匀) - 随机性质量较低 - 最大范围有限(决于RAND_MAX)[^2][^4] ### 关键区别对比 | 特性 | C++11 `<random>` | `rand()`函数 | |--------------------|------------------|------------------| | 随机性质量 | ⭐⭐⭐⭐⭐ (加密级) | ⭐⭐ | | 分布均匀性 | 完美均匀 | 模运算导致偏差 | | 线程安全 | ✅ 是 | ❌ 否 | | 支持多种分布 | ✅ | ❌ | | 最大随机范围 | 2³² 或更高 | 依赖RAND_MAX | ### 使用建议 1. **新项目**:务必使用C++11的`<random>`库 2. **需要高质量随机数**:用`std::random_device`初始化 3. **性能敏感场景**:可复用`std::mt19937`引擎对象 4. **避免传统方法**:除非兼容旧编译器(C++11前) > ℹ️ 注意:在Linux系统中使用`std::random_device`时,默认使用`/dev/urandom`,如需更高安全性可用`/dev/random`(可能阻塞)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值