Javascript 灵活运用数学
我想创建一个4个字母长的字符串,随机包含字符串中的任何字母:“ROYGBV” 我所做的是:Javascript 灵活运用数学,javascript,string,random,operators,Javascript,String,Random,Operators,我想创建一个4个字母长的字符串,随机包含字符串中的任何字母:“ROYGBV” 我所做的是: function generateSolution(){ var colors = "ROYGBV"; var str = ""; for (var i=0; i<4; i++) { var loc = Math.ceil( Math.random()*colors.length ); str += colors.charAt(loc);
function generateSolution(){
var colors = "ROYGBV";
var str = "";
for (var i=0; i<4; i++) {
var loc = Math.ceil( Math.random()*colors.length );
str += colors.charAt(loc);
}
return str;
}
我在解决方案中使用Math.ceil来防止随机浮动,比如4.333123等等。在不舍入随机数的情况下,这个解决方案是如何工作的
另外,|
操作符是什么意思?第二个解决方案中的随机化实际上是如何工作的?您想要的是Math.floor()
而不是Math.ceil()
。Javascript数组是以零为基础的,因此您希望值介于0和5之间。The
是。由于JavaScript中的逐位运算只能处理32位整数,因此这是一种将数字四舍五入到0的简捷方法。在您的情况下,它相当于:
colors.charAt(Math.floor((Math.random() * 6)));
需要对数字进行汇总,而不是进行四舍五入,因为您当前正在使用ceil
,否则将丢失数组的第一个元素(索引为0)
以下是从中转换为整数的完整详细信息:
生产A:A@B,其中@是上述生产中的一个位运算符,其计算如下:
function generateSolution() {
var colors = "ROYGBV",
str = "",
l = colors.length,
i = 0;
while (i < 4) {
var loc = Math.floor(Math.random() * l);
str += colors.charAt(loc);
i += 1;
}
return str;
}
console.log(generateSolution());
函数生成解决方案(){
var colors=“ROYGBV”,
str=“”,
l=颜色。长度,
i=0;
而(i<4){
var loc=数学地板(数学随机()*l);
str+=颜色。字符(loc);
i+=1;
}
返回str;
}
log(generateSolution());
在
你需要Math.floor,|只是执行32位floor的一种按位方法@frrlod:你为什么在收到答案后要对问题进行如此多的更改?我想强调问题的第二部分,但你是对的。感谢您的编辑。
|
不是地板的简写,它是向零进位的简写,使用NaN和Infinity->0。很抱歉造成混淆,这完全回答了我的问题。
function generateSolution() {
var colors = "ROYGBV",
str = "",
l = colors.length,
i = 0;
while (i < 4) {
var loc = Math.floor(Math.random() * l);
str += colors.charAt(loc);
i += 1;
}
return str;
}
console.log(generateSolution());