数组中有10个不同的数字
10 different number in array
我需要一个数组中的10个不同的随机数
我正在使用以下函数:
for (k=0;k<10;k++) {
x[k] = Math.floor((Math.random()*10));
for (l=0;l<k;l++){
if (x[l]==x[k]){fail=true;}
}
if (fail){k=k-1;}
}
谢谢你的回答
确保所有变量都声明了:
var x = [], k, l, fail;
确保在内循环之前重置"fail":
fail = false;
for (l = 0; l < k; l++)
// ...
现在,如果你想在一个数组中有10个数字,并且数组有10个元素长,你最好用从1到10(或0到9)的数字填充数组;随便),然后对数组进行洗牌。如果你按照自己的方式做事,那么这个过程的表现是不可预测的。当你找到最后几个元素时,可能需要尝试两到三次,或者可能需要数百次;你永远不知道随机数序列会发生什么。
最好用从1到10的数字填充数组,然后对其进行洗牌,如下所示:
var myArray = [1,2,3,4,5,6,7,8,9,10];
//shuffle array
//code from http://stackoverflow.com/a/2450976/1223693
var i = myArray.length, j, temp;
if ( i === 0 ) return false;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = temp;
}
//done
alert(myArray);
你当前的方法非常慢,因为
- 它有一个内循环
- 在生成正确的数字之前可能会多次生成错误的数字
你真的想要一个包含10个元素的数组,这些元素都是0到9之间的随机数,并且它们都不允许相同?所以你想把10个元素中的数字0-9打乱吗?
然后将它们初始化并洗牌:
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/array/shuffle [v1.0]
function shuffle(o){ //v1.0
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
};
// init the array:
var a = new Array();
for (var i=0;i<10;i++){
a.push(i);
}
// shuffle it.
a = shuffle(a);
可以更简单-
var nums= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].sort(
function(){return Math.random()-.5});
相关文章:
- 如何jQuery-Add按钮最多插入10个新输入
- 正在加载+10个帖子
- 如何在输入文本字段中输入10个字符时自动提交表单
- 骨干.js集合筛选前 10 个模型
- 使用jQuery在p-tag中查找给定字符串的前10个单词和下10个单词
- ajax请求每秒返回10个响应
- 当一次加载所有文件时,是否有来自阵列的10个随机闪存文件显示在页面上?(在javascript中)
- 当至少有20个搜索结果时,只呈现10个搜索结果?使用Google Places API
- 将动态表单元素限制为最多10个记录
- JavaScript仅加载10个xml节点
- 限制“;文本字段“;以magento形式只接受数字和最多10个数字
- 精确匹配10个边界未知的数字
- 正则表达式至少包含 10 个字符,包括 1 个数字和一个大写字母
- 如何在Javascript代码中每行打印10个数字/短语
- 如何在1到9999之间创建100个4位数的随机数,并将数字排成10行,每行10个数字
- 数组中有10个不同的数字
- 在列之间平分一个数字.12个糖果,10个人.2个人每人得到2个糖果,剩下的人得到1个
- 提示用户输入10个输入,将其放入数组中,找到平均值,并打印小于平均值的数字
- 13个字符的字母数字字符串的正则表达式,正好包含3个字符和10个数字
- 我需要REGEXP alpha数字邮政编码,其中包含至少3 &最多10个值