当前位置:网站首页>JS 随机数(随机数 小数)
JS 随机数(随机数 小数)
2022-06-28 00:06:00 【最凶残的小海豹】
之前在网上看了一些其他的文章,没找到直接取[n,m] 两个都是小数的区间随机值,所以自己写了一个
说明:
min和max可以输入整数或者小数。decimal:不输入或者输入为零的时候,小数部分的最大位数是min和max小数部分最大的位数。例如:randomNum(0, 6.88, 0)小数部分最大值是99,例如2.99,如果输入的话,则会根据min和max还有decimal三者来判定最大位数。- 如果想随机整数值,
min和max输入整数,decimal不输入或者为零都可以,例如:randomNum(1, 9, 0)或者randomNum(1, 9)
function randomNum(min = 0, max = 0, decimal=0) {
let min_z = Math.trunc(min); // 最小值的整数部分
let max_z = Math.trunc(max); // 最大值的整数部分
// 判断是否存在小数部分,不存在的话为0
let min_x = isNaN(getDecimalNum(min)) ? 0 : getDecimalNum(min); // 最小值的小数部分
let max_x = isNaN(getDecimalNum(max)) ? 0 : getDecimalNum(max); // 最大值的小数部分
// 区分有小数和没小数的情况
if (min_x > 0 || max_x > 0 || decimal > 0) {
// 整数部分随机数
let z = parseInt(Math.random() * (max_z - min_z + 1) + min_z, 10);
// 小数部分随机数
let x = 0;
// 小数部分随机数最大位数
let max_decimal = min_x.toString().length > max_x.toString().length ? min_x.toString().length : max_x.toString().length;
max_decimal = decimal > max_decimal ? decimal : max_decimal;
// 判断随机出的整数部分,是否等于最小值或者最大值
if(z == min_z || z == max_z){
if(z == min_z){
// 整数部分随机数等于最小值,那么应该从最小值的小数部分开始,到小数位数的最大值随机就可以
x = parseInt(Math.random() * (Math.pow(10, max_decimal) - min_x) + min_x, 10);
}else{
// 整数部分随机数等于最大值,那么应该从0开始,到最大值小数部分
x = parseInt(Math.random() * (max_x + 1), 10);
}
}else{
// 整数部分在最大最小值区间的,就从0到小数位数的最大值随机就可以
x = parseInt(Math.random() * (Math.pow(10, max_decimal)), 10);
}
return Number(`${
z}.${
x}`);
} else {
return parseInt(Math.random() * (max_z - min_z + 1) + min_z, 10);
}
}
// 获取数值的小数部分
function getDecimalNum(data){
return Number(data.toString().split('.')[1]);
}
//使用
console.log(`随机数是:${
randomNum(0, 6.8, 2)}`)
边栏推荐
- 面试官问:能否模拟实现JS的new操作符
- 205. 同构字符串
- 【sylixos】NEW_ Example of type 1 character drive
- 深入解析kubernetes controller-runtime
- Neural network of zero basis multi map detailed map
- Ten thousand words long article understanding business intelligence (BI) | recommended collection
- 评价——秩和比综合评价
- I/o limit process and CPU limit process
- Capacitor
- [Yocto RM]1 - System Requirements
猜你喜欢

什么是数字化?什么是数字化转型?为什么企业选择数字化转型?

The practice of dual process guard and keeping alive in IM instant messaging development

Maimai hot post: Why are big factories keen on making wheels?

Evaluation - grey correlation analysis

MySQL - function

Overview of drug discovery-01 overview of drug discovery

Adobe Premiere Basics - general operations for editing material files (offline files, replacing materials, material labels and grouping, material enabling, convenient adjustment of opacity, project pa

frp实现内网穿透

Réseau neuronal pour la solution détaillée Multi - diagrammes de fondation zéro

嵌入式必学,硬件资源接口详解——基于ARM AM335X开发板 (上)
随机推荐
如何理解 Transformer 中的 Query、Key 与 Value
Lefse analyzes the local implementation method with all installation files and details to ensure success.
类的初始化与回调的用法
Shardingsphere-proxy-5.0.0 establish MySQL read / write separation connection (6)
指南针股票开户是会有什么风险吗?指南针开户安全吗
Comprehensive evaluation of free, easy-to-use and powerful open source note taking software
Prometeus 2.35.0 新特性
How to optimize the "message" list of IM
Numpy----np.reshape()
Ten thousand words long article understanding business intelligence (BI) | recommended collection
将某数据库N多表名作为另外一张表中某一列得值(范围可以是别的数据库中得某张表)
零基礎多圖詳解圖神經網絡
Can you open an account for stock trading in flush? Is it safe?
COSCon'22 讲师征集令
Data analysts too hot? Monthly income 3W? Tell you the true situation of this industry with data
What are the risks of opening a compass stock account? Is it safe to open a compass account
Intranet penetration with FRP
【永艺XY椅】试用体验
评价——秩和比综合评价
[Yocto RM]9 - QA Error and Warning Messages