如何用JavaScript以非随机的方式在一个范围内生成数字
How to generate numbers within a range in a non random way with JavaScript?
我知道如何在两个数字之间生成一个随机数。但我想实现的是用一种不完全随机的方式在两个数字之间生成一个数字。让我解释一下……
我有一个函数,它根据传入的数字生成颜色。如果该数字在0到600之间,我希望它将0到120之间的数字传递给hsl值的色调。如果数字大于600,我希望将120到240之间的数字传递给hsl值的色调。我的函数看起来像这样:
getColor:function (number {
var hue;
var color;
if (number <= 600) {
hue = [A number between 0 and 120];
} else if (number >= 600) {
hue = [A number between 120 and 240];
}
color = 'hsl(' + hue + ', 100%, 80%)'
return color;
}
因此,传递给函数的数字越大,例如,在0到600之间,在0到120之间的色相值就越高。明白了吗?
Thx u——Gaweyne
简单数学:
hue = Math.floor(number * 120 / 600);
或两点:
function transpose(smin, smax, dmin, dmax) {
var slen = smax - smin;
var dlen = dmax - dmin;
var ratio = dlen / slen;
return function(num) {
return num * ratio + smin;
}
}
transpose(0, 600, 0, 120)(300); // 60
首先你应该知道number
的最大值和最小值。在我的例子中,number的最大值是1200,最小值是0,所以范围在0到1200之间。hue
的取值范围为0 ~ 240。
传入函数的number
越高,hue
值越高。
0 hue
= 0 number
;
120 hue
= 600 number
;
240 hue
= 1200 number
;
hue
= (600/120) number
= (1200/240) number
=> 1 hue
= 5 number
在我的例子中,(number
在0和1200之间,600是中间)hue
中的1值等于number
中的5值。所以:
hue = number / 5;
如果你想要色调是一个整数,只需使用Math
:
hue = Math.floor(number / 5);
在我的例子中,hue
每增加5到number
,它将增长1,无论number
小于或大于600,因为600两侧的number
的范围是相同的(600在范围的中间)。如果这不是您想要的,并且600不在范围的中间,则必须执行上述两次相同的计算。
var max = [maximum value of number];
var min = [minimum value of number];
getColor:function (number {
var hue;
var color;
if (number <= 600) {
hue = Math.floor( number / ((600 - min) / 120) );
} else if (number >= 600) {
hue = Math.floor( number / ((max - 600) / 120) ) + 120;
}
color = 'hsl(' + hue + ', 100%, 80%)';
return color;
}
相关文章:
- 试图检查表单中的值是否为一个设定范围内的数字
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 如何使用webkit浏览器在一个范围内选择一个节点
- jquery或js:将站点范围内的链接替换为另一个AND,并更改为https
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 从全局范围内的另一个函数 - Javascript 调用函数构造函数的方法
- Javascript从另一个回调访问对象变量,而不将变量放在全局范围内
- Javascript:使用crypto.getRandomValues生成一个范围内的随机数
- 如何创建一个范围内随机数的简单分布图(java或javascript)
- 遍历循环,在一个范围内随机更改变量的值,但满足所有变量
- 使用moment.js、js或Jquery,在一个时间范围内打开一个功能
- 如何提醒所有动态id's在一个范围内
- 使用jQuery UI datepicker在一个范围内定制特定的禁用日期
- ES 6类:Access "this"在另一个范围内
- 动态地为ng-pattern创建一个正则表达式,仅用于范围内的数字
- 检查整数是否在其中一个范围内
- 我如何写一个递归函数来获得一个范围内的值
- 检查数组中的值是否在一个范围内
- 如何用JavaScript以非随机的方式在一个范围内生成数字
- JavaScript - Moment.js - isBetween() 方法检查时间是否落在一个范围内