初级--02---前缀和数组、Math.random()、对数器和随机行为
文章目录前缀和数组1. 什么是前缀和数组某项可以表示为相邻前缀和之差A[i]preSum[i]−preSum[i−1]代码实现随机函数 Math.random()介绍Math.random()是令系统随机选取大于等于 0.0 且小于 1.0的伪随机 double值公式总结产生一个[01)之间的随机数。Math.random()返回大于等于0小于n之间的随机数int num(int)(Math.random()*n);返回指定范围的随机数(m-n之间)的公式:Math.random()*(n-m)m //包括m ,不包括nMath.random()*(n1-m)m //包括m ,也包括n案例 1:需求: **返回0-5之前的随机数**(int) (Math.random() * 6)案例2: 我们需要取222之间的偶数(int)2(int)(Math.random()*(22-2));案例 3:需求:**Math.max(Math.random(), Math.random());**经典题---- 随机函数题目1:需求:思路:题目 2:分析:那么我们调用 2次会有4中情况 ,假设出现0的概率为p,那么出现1的概率就为(1-p)等概率返回0和1:对数器用于校对数据正确与否的模拟器验证选择排序对数器结果:前缀和数组1. 什么是前缀和前面的所有再包括自己数组 第 0 项 到 当前项 的 总和如果用一个数组 preSum 表示preSum[0]数组A 第 0 项 到 第 0 项 的总和preSum[1]数组A 第 0 项 到 第 1 项 的总和preSum[2]数组A 第 0 项 到 第 2 项 的总和preSum[3]数组A 第 0 项 到 第 3 项 的总和…… 于是有preSum[i]A[0]A[1]…A[i]数组某项可以表示为相邻前缀和之差A[i]preSum[i]−preSum[i−1]代码实现publicstaticclassRangeSum2{privateint[]preSum;publicRangeSum2(int[]array){intNarray.length;preSumnewint[N];preSum[0]array[0];for(inti1;iN;i){preSum[i]preSum[i-1]array[i];}}publicintrangeSum(intL,intR){returnL0?preSum[R]:preSum[R]-preSum[L-1];}}随机函数 Math.random()介绍Math.random()是令系统随机选取大于等于 0.0 且小于 1.0的伪随机double值公式总结产生一个[01)之间的随机数。Math.random()返回大于等于0小于n之间的随机数int num(int)(Math.random()*n);返回指定范围的随机数(m-n之间)的公式:Math.random()*(n-m)m //包括m ,不包括n或者Math.random()*(n1-m)m //包括m ,也包括n案例 1:需求:返回0-5之前的随机数(int) (Math.random() * 6)publicclassTest2{publicstaticvoidmain(String[]args){inttestTimes10000000;intK6;int[]countsnewint[6];for(inti0;itestTimes;i){intans(int)(Math.random()*K);// [0,K-1]counts[ans];}for(inti0;iK;i){System.out.println(i这个数出现了 counts[i] 次);}}}案例2: 我们需要取222之间的偶数(int)2(int)(Math.random()*(22-2));publicclassTest03{publicstaticintGetevenNum(doublenum1,doublenum2){ints(int)num1(int)(Math.random()*(num2-num1));if(s%20){returns;}else{returns1;}}publicstaticvoidmain(String[]args){System.out.println(任意一个num1_num2之间的偶数GetevenNum(2,22));}}案例 3:需求:任意的xx属于[0,1)[0,x)范围上的数出现概率由原来的x调整成x平方Math.max(Math.random(), Math.random());经典题---- 随机函数题目1:需求:随机机制只能用f1思路:f1函数----实现1 ~5随机获取f2函数----等概率返回0和1f3函数----得到000 ~ 111 做到等概率 0 ~ 7等概率返回一个f4函数----0 ~ 6等概率返回一个g函数----实现1~7随机返回// 随机机制只能用f1publicstaticintf1(){return(int)(Math.random()*5)1;}// 等概率返回0和1publicstaticintf2(){intans0;do{ansf1();}while(ans3);returnans3?0:1;}// 得到000 ~ 111 做到等概率 0 ~ 7等概率返回一个publicstaticintf3(){return(f2()2)(f2()1)f2();}// 0 ~ 6等概率返回一个publicstaticintf4(){intans0;do{ansf3();}while(ans7);returnans;}publicstaticintg(){returnf4()1;}题目 2:分析:你只能知道x会以固定概率返回0和1但是x的内容你看不到publicstaticintx(){returnMath.random()0.84?0:1;}那么我们调用 2次会有4中情况 ,假设出现0的概率为p,那么出现1的概率就为(1-p)0,0 -----p * p0,1 -----p * (1-p)1,0 -----(1-p) * p1,1-----(1-p) * (1-p)由此可知,出现(0,1) 和 (1,0)的概率 为一样等概率返回0和1:// 你只能知道x会以固定概率返回0和1但是x的内容你看不到publicstaticintx(){returnMath.random()0.84?0:1;}// 等概率返回0和1publicstaticinty(){intans0;do{ansx();}while(ansx());returnans;}对数器用于校对数据正确与否的模拟器验证选择排序publicstaticvoidselectionSort(int[]arr){if(arrnull||arr.length2){return;}for(inti0;iarr.length-1;i){intminIndexi;for(intji1;jarr.length;j){if(arr[j]arr[minIndex]){minIndexj;}}swap(arr,i,minIndex);}}publicstaticvoidswap(int[]arr,inti,intj){inttmparr[i];arr[i]arr[j];arr[j]tmp;}对数器// 返回一个数组arrarr长度[0,maxLen-1],arr中的每个值[0,maxValue-1]publicstaticint[]lenRandomValueRandom(intmaxLen,intmaxValue){intlen(int)(Math.random()*maxLen);int[]ansnewint[len];for(inti0;ilen;i){ans[i](int)(Math.random()*maxValue);}returnans;}publicstaticint[]copyArray(int[]arr){returnArrays.copyOf(arr,arr.length);}// arr1和arr2一定等长publicstaticbooleanisSorted(int[]arr){if(arr.length2){returntrue;}intmaxarr[0];for(inti1;iarr.length;i){if(maxarr[i]){returnfalse;}maxMath.max(max,arr[i]);}returntrue;}publicstaticvoidmain(String[]args){intmaxLen5;intmaxValue1000;inttestTime2;for(inti0;itestTime;i){int[]arr1lenRandomValueRandom(maxLen,maxValue);int[]tmpcopyArray(arr1);selectionSort(arr1);if(!isSorted(arr1)){for(intj0;jtmp.length;j){System.out.print(tmp[j] );}System.out.println();System.out.println(选择排序错了);break;}Arrays.stream(arr1).forEach((s)-System.out.print(s ));System.out.println(排序正确);}}结果:正确错误

相关新闻

初级--03---二分、复杂度、哈希表和有序表

初级--03---二分、复杂度、哈希表和有序表

文章目录二分法题目1测试-----制造对数器int mid (L R) / 2; 有可能int溢出优化为: int mid L ((R - L) >> 1);题目2局部最小值问题时间复杂度基础--04----时间、空间复杂度哈希表哈希表可以看成一个(K V)表哈希表的增删改查,时间复杂度都可以看成 O(1)哈希表分类:Ha…

2026/8/25 7:45:28 阅读更多 →
符号表--01---概述与实现

符号表--01---概述与实现

符号表 定义: 符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。使用场景: 符号表在实际生活中的使用场景是非常广泛…

2026/8/25 7:44:28 阅读更多 →
I2C协议进阶:快速模式、高速模式与10位寻址详解

I2C协议进阶:快速模式、高速模式与10位寻址详解

1. 从标准模式到性能跃迁:为什么需要更快的I2C?搞嵌入式开发的朋友,对I2C(Inter-Integrated Circuit)协议肯定不陌生。它那两根线(SDA数据线、SCL时钟线)的简洁设计,让连接多个低速外…

2026/8/25 7:44:28 阅读更多 →

最新新闻

AI大模型面试核心考察方向与高频问题解析

AI大模型面试核心考察方向与高频问题解析

1. AI大模型面试核心考察方向解析在当前的AI技术招聘中,大模型相关岗位的面试通常围绕五个核心维度展开:模型原理深度、工程实践能力、业务场景理解、前沿技术跟踪和代码实现水平。作为面试官,我设计的技术面问题往往从这五个角度切入&#x…

2026/8/25 8:31:48 阅读更多 →
腾讯Java后端面试解析:大模型Agent架构与高并发优化

腾讯Java后端面试解析:大模型Agent架构与高并发优化

1. 腾讯Java后端实习二面技术复盘:核心考察点解析去年夏天,我在腾讯某核心业务部门的二面经历让我对Java后端工程师的能力模型有了全新认知。这场持续75分钟的技术面谈,完全颠覆了我对"八股文面试"的刻板印象——面试官没有纠结于琐…

2026/8/25 8:31:48 阅读更多 →
NVIDIA GPU架构演进:从图形处理器到AI计算引擎的深度解析

NVIDIA GPU架构演进:从图形处理器到AI计算引擎的深度解析

1. 项目概述:从图形处理器到计算引擎的蜕变聊起NVIDIA GPU架构的演进,这话题对很多搞AI、做渲染或者单纯是硬件发烧友的朋友来说,绝对是个绕不开的“硬核”谈资。但如果你以为这只是显卡性能的简单堆叠,那就大错特错了。从最初的G…

2026/8/25 8:31:48 阅读更多 →
iOS高级开发工程师技术栈与面试全解析

iOS高级开发工程师技术栈与面试全解析

1. 加绩科技iOS高级开发工程师职位全景透视作为一家专注于企业级移动解决方案的科技服务商,加绩科技对iOS高级开发工程师的技术深度和架构能力有着明确要求。从招聘需求和行业趋势来看,这个岗位绝非简单的功能实现者,而是需要具备全链路技术把…

2026/8/25 8:31:48 阅读更多 →
BookBrowser插件化格式设计揭秘:BookInfo接口如何3行代码注册新电子书格式

BookBrowser插件化格式设计揭秘:BookInfo接口如何3行代码注册新电子书格式

BookBrowser插件化格式设计揭秘:BookInfo接口如何3行代码注册新电子书格式 【免费下载链接】BookBrowser eBook server supporting ePub, MOBI and PDF books. 项目地址: https://gitcode.com/gh_mirrors/bo/BookBrowser BookBrowser 是一款轻量、开源的电子…

2026/8/25 8:31:48 阅读更多 →
2026前端面试核心:框架、JS、CSS与工程化实战

2026前端面试核心:框架、JS、CSS与工程化实战

1. 2026前端面试速背指南:核心框架与高频考点作为一名经历过上百场技术面试的前端工程师,我深知面试前的紧张感。2026年的前端技术栈已经趋于稳定,但面试考察点却更加注重实际应用能力。这份速背指南不是投机取巧,而是帮你快速梳理…

2026/8/25 8:30:47 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →