【伪随机数】关于排序算法自测如何生成随机数而引发的……
以 Random 开始
可能一开始,你只是写到了排序算法如何生成随机数
public static void main(String[] args) {Random random = new Random();int[] nums = new int[10];for (int i = 0; i < nums.length; i++) {nums[i] = random.nextInt(100);}System.out.println("Before sorting...");for (int num : nums) {System.out.println(num);}quickSort(nums, 0, nums.length - 1);System.out.println("After sorting...");for (int num : nums) {System.out.println(num);}
}
然后想弱弱的问一句
Random random = new Random();
int num = random.nextInt(100);
num的取值范围包不包括 100?
然后,你看到了这篇文章~恭喜🎉~你以后再也不会忘记什么是伪随机数了
(什么、你并不想知道什么是伪随机数?……emmm来都来了,花一分钟瞅瞅呗_
一切都起源于这张图

我们大致翻译下上面👆的注释
返回一个介于 0(包含)和指定值(不包含)之间的伪随机(pseudorandom)、均匀分布的 int 值,该值取自随机数生成器的序列。
nextInt 的一般约定是在指定范围内伪随机生成并返回一个 int 值。
所有绑定的 int 值都会以(近似)相等的概率生成。
……
“伪随机”?“(近似)相等的概率”?什么意思 为什么这么说我们 random 生成的随机数?
什么是伪随机数(pseudorandom)?
伪随机数就是由算法生成的随机数,真随机是真正随机的数。
emmmm...哈哈约等于没说哈
其实一般来讲,计算机生成的的都叫伪随机数,因为他们都有以下几点共同之处:
- 算法可重现性:比如我们开篇引入内容提到的Random函数,它其实就是通过确定性的数学算法来生成随机数的,即只要给定相同的初始值(种子),就会按照固定的规则和步骤,产生完全相同的随机数序列(比如常见的伪随机数生成算法线性同余发生器(LCG))
- 缺乏真正的不确定性:真正的随机数来源于自然界的随机事件,如放射性衰变、热噪声等,这些事件是不可预测的,具有真正的不确定性。正如上一个特性“算法可重现性”提到的,只要知道初始值和规则,就可以重现整个随机数序列,所以它并不是真正的不确定(只是我们无法简单的确定下一个是啥)。而真正的随机数,如基于量子随机数生成器产生的随机数,其每一个数值的出现都是独立的、不可重现的随机事件的结果。
为什么量子随机数生成器产生的就是真正的随机数?
大家应该有听过那个“薛定谔的猫”吧%%
这是一个著名的思想实验,在这个思想实验中,一只猫被放置在一个密封的盒子里,盒子内有一个装有毒气的装置,该装置与一个放射性原子相连。根据量子力学的解释,在未进行观测之前,放射性原子处于衰变与未衰变的叠加态,相应地,猫也处于既死又活的叠加态。只有当我们打开盒子进行观测时,原子的波函数才会坍缩,猫的状态才会确定为死或活。
而量子随机数生成器中的量子比特(qubit)也处于类似的叠加态,直到被测量才会塌缩到0或1的某个确定状态,且塌缩到0或1的概率是相等的,这种不确定性是量子力学的基本特性,不是由任何外部因素或人为设定的算法所决定的,因此基于量子叠加态的测量结果具有真正的随机性。
- 周期性重复:虽然现代的伪随机数生成算法周期通常很长很长很长长长长……但理论上它们生成的随机数序列终究会重复。例如,梅森旋转算法的周期为2的19937次方减1,虽然这个周期非常长,在一般应用中几乎不会出现重复的情况,但从理论上讲,当生成的随机数数量达到这个周期时,序列就会开始重复。
梅森旋转算法(Mersenne Twister,MT19937)的周期到底有多长?
2^19937-1(2的19937次方减1),其实不是很有概念,这个数到底有多大?
宇宙有多大知道不emmmm
目前观测到的宇宙直径约为930亿光年,即9.3 × 10^10光年
换算成米为:
9.3 × 10^10 × 9.461 × 10^15 ≈ 8.8 × 10^26 米
那么2^19937米相当于多少个宇宙直径?
2^19937 / 8.8 × 10^26 ≈ 4.89×10^5974
相当于 4.89×10^5974 个宇宙直径
宇宙不太熟悉?那用地球算算。。。
地球的赤道周长约为40,075公里,即40,075,000米。
2^19937(2的19937次方)米相当于多少个地球周长?
简单除一下……2^19937/40,075,000 约等于1.07×10^5994
相当于绕地球赤道大约1.07×10^5994圈
以 Random 结束
我们回到一开始的问题:
Random random = new Random();
int num = random.nextInt(100);
num的取值范围包不包括 100?
不包括嘿嘿😊
[0,100) 左闭右开,就是函数注释中的第一句
返回一个介于 0(包含)和指定值(不包含)之间的伪随机(pseudorandom)、均匀分布的 int 值,该值取自随机数生成器的序列。
相关文章:
【伪随机数】关于排序算法自测如何生成随机数而引发的……
以 Random 开始 可能一开始,你只是写到了排序算法如何生成随机数 public static void main(String[] args) {Random random new Random();int[] nums new int[10];for (int i 0; i < nums.length; i) {nums[i] random.nextInt(100);}System.out.println(&q…...
核密度估计(Kernel Density Estimation, KDE)是一种非参数统计方法
一、核密度估计 核密度估计(Kernel Density Estimation, KDE)是一种非参数统计方法,用于估计随机变量的概率密度函数。它通过将每个数据点周围的核函数叠加,生成平滑的密度曲线。以下是其核心要点: 1. 基本概念 非参…...
【k8s面试题2025】2、练气初期
在练气初期,灵气还比较稀薄,只能勉强在体内运转几个周天。 文章目录 简述k8s静态pod为 Kubernetes 集群移除新节点:为 K8s 集群添加新节点Kubernetes 中 Pod 的调度流程 简述k8s静态pod 定义 静态Pod是一种特殊类型的Pod,它是由ku…...
栈溢出原理
文章目录 前言一、基本示例二、分析栈1. 先不考虑gets函数的栈情况2. 分析gets函数的栈区情况 三、利用栈1. 构造字符串2. 利用漏洞 前言 栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变。…...
Jmeter如何进行多服务器远程测试
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到单…...
2.slf4j入口
文章目录 一、故事引入二、原理探究三、SLF4JServiceProvider四、总结 一、故事引入 故事要从下面这段代码说起 public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main( String[] args ) throws Exception {lo…...
初学stm32 --- CAN
目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…...
软件测试—接口测试面试题及jmeter面试题
一,接口面试题 1.接口的作用 实现前后端的交互,实现数据的传输 2.什么是接口测试 接口测试就是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑关系 3.接口测试必要性 1.可以发现很…...
图论的起点——七桥问题
普瑞格尔河从古堡哥尼斯堡市中心流过,河中有小岛两座,筑有7座古桥,哥尼斯堡人杰地灵,市民普遍爱好数学。1736年,该市一名市民向大数学家Euler提出如下的所谓“七桥问题”: 从家里出发,7座桥每桥…...
嵌入式开发通讯协议大全(在写中)
目录 modbus RTU通讯协议: pmbus通讯协议: modbus RTU通讯协议: 主要应用功能: 规范了软件变量,访问功能码,给不同工程师开发的不同产品有统一的通讯标准 帧结构简单,占用带宽少,…...
webpack 4 升级 webpack 5
升级至最新的 webpack 和 webpack-cli npm run build 报错, unknown option -p 解决方案: 改成 --mode production npm run build 报错 unknown option --hide-modules 解决方案:直接移除 npm run build 报错:TypeError: Cannot a…...
oneplus3t-lineageos-16.1编译-android9, oneplus3t-lineage-14编译-android7
oneplus3t-lineage-14编译-android7 1 清华linageos镜像 x lineage-14.1-20180223-nightly-oneplus3-signed.zip ntfs分区挂载为普通用户目录 , ext4分区挂载为普通用户目录 bfsu/lineageOS镜像 ts/lingeageOS镜像 oneplus3/lineage-build-simple-manual.md, manifest-p…...
HTML中最基本的东西
本文内容的标签,将是看懂HTML的最基本之基本 ,是跟您在写文章时候一样内容。一般想掌握极其容易,但是也要懂得如何使用,过目不忘,为手熟尔。才是我们学习的最终目的。其实边看边敲都行,或者是边看边复制粘贴…...
<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加
更新日志: Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备: 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…...
神经网络常见操作(卷积)输入输出
卷积 dimd的tensor可以进行torch.nn.Convnd(in_channels,out_channels),其中nd-1,d-2对于torch.nn.Convnd(in_channels,out_channels),改变的是tensor的倒数n1维的大小 全连接 使用torch.nn.Linear(in_features,out_features,bias)实现YXWT b,其中X 的形状为 (ba…...
25/1/16 嵌入式笔记 STM32F108
输入捕获 TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_TimeBaseStruct.TIM_Period 0xFFFF; // 自动重装载值 TIM_TimeBaseStruct.TIM_Prescaler 71; // 预分频值 TIM_TimeBaseStruct.TIM_ClockDivision 0; TIM_TimeBaseStruct.TIM_CounterMode TIM_CounterMode_Up…...
mac 安装 node
brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…...
mysql常用运维命令
mysql常用运维命令 查看当前所有连接 -- 查看当前所有连接 SHOW FULL PROCESSLIST;说明: 关注State状态列,是否有锁。如果大量状态是waiting for handler commit检查磁盘是否占满关注Time耗时列,是否有慢查询关注Command列,如果…...
正则表达式学习网站
网上亲测好用的网站: Regexlearn 这个网站可以从0开始教会正则表达式的使用。 mklab 包含常用表达式,车次,超链接,号码等提取。...
gradle,adb命令行编译备忘
追踪依赖(为了解决duplicateClass…错误) gradlew.bat app:dependencies > dep-tree.txt # 分析dep-tree.txt的依赖结构,找到对应的包,可能需要做exclude控制,或者查看库issueverbose编译(我一直需要verbose) gradlew.bat assembleDebug -Dhttps.pr…...
新手也能懂的SSRF漏洞实战:用iwebsec靶场复现文件读取与内网探测
从零开始掌握SSRF漏洞:iwebsec靶场实战指南1. 认识SSRF漏洞的本质想象一下,你正在一家高档餐厅点餐,服务员承诺可以帮你从任何地方获取食材——包括隔壁竞争对手的厨房。SSRF(Server-Side Request Forgery)漏洞就像这个…...
金融合规审核为何人力堆积却仍漏洞百出?2026年RegTech演进与Agent全链路闭环解决方案
在2026年的金融监管环境下,合规审核已不再是简单的“查漏补缺”,而是演变为一场高强度的算力与逻辑博弈。尽管金融机构在合规成本上的投入逐年攀升,甚至不惜以“人海战术”填补流程断点,但监管罚单的数额与频率却并未显著下降。这…...
告别数据饥荒:用PyTorch手把手实现原型网络(Prototypical Networks)做电影评论情感分类
告别数据饥荒:用PyTorch手把手实现原型网络做电影评论情感分类 在自然语言处理领域,情感分析一直是热门研究方向,但现实中的开发者常面临一个尴尬困境:标注数据太少。传统深度学习方法动辄需要成千上万的标注样本,而实…...
基于雷达与光敏传感器的低功耗智能窗防设备设计与实现
1. 项目概述:一个基于雷达与光敏的智能窗防设备几年前,我因为一次短暂的出差,家里空置了几天,回来后就一直琢磨着怎么给家里的窗户加点“动静”。市面上的智能安防摄像头固然好,但要么需要复杂的布线,要么云…...
TorchDynamo与TorchInductor:PyTorch编译器生态的完整解析
TorchDynamo与TorchInductor:PyTorch编译器生态的完整解析 【免费下载链接】torchdynamo A Python-level JIT compiler designed to make unmodified PyTorch programs faster. 项目地址: https://gitcode.com/gh_mirrors/to/torchdynamo TorchDynamo 是一个…...
OpenCore Legacy Patcher完全指南:3步让旧款Mac焕发新生的终极方案
OpenCore Legacy Patcher完全指南:3步让旧款Mac焕发新生的终极方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否拥有一台性能尚可但已被…...
【DeepSeek集成测试黄金标准】:20年专家亲授5大避坑指南与自动化落地框架
更多请点击: https://intelliparadigm.com 第一章:DeepSeek集成测试黄金标准的演进与核心价值 集成测试在大语言模型工程化落地过程中已从“验证功能可用”跃迁为“保障推理一致性、上下文鲁棒性与安全边界的三位一体质量门禁”。DeepSeek系列模型&…...
基于MAX78000与CNN的智能螺栓巡检小车:嵌入式AI实战解析
1. 项目概述与核心思路在轨道交通的日常运维中,螺栓的紧固状态检查是一项繁重且关键的任务。无论是轨道上的紧固螺栓,还是列车转向架、轮对轴承上的关键螺栓,其松动或失效都可能引发严重的安全事故。传统的人工巡检方式不仅效率低下ÿ…...
从科研图表到商业报表:如何用Matplotlib的legend()提升你的图表专业度?
从科研图表到商业报表:如何用Matplotlib的legend()提升你的图表专业度? 在数据驱动的决策时代,图表不仅是科研论文中的证据载体,更是商业汇报中的说服工具。我曾见证一位生物统计学家将同一组临床试验数据呈现给三种不同受众&…...
终极指南:Windows 10完美安装PL2303驱动,解决老旧USB转串口芯片兼容性问题
终极指南:Windows 10完美安装PL2303驱动,解决老旧USB转串口芯片兼容性问题 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 你是否还在为Windows…...
