admin管理员组文章数量:1399313
quick question:
What is the best way for implementing this line of python code (generates two random but distinct numbers from a given range)...
random.sample(xrange(10), 2)
...in Javascript?
Thanks in advance!
Martin
quick question:
What is the best way for implementing this line of python code (generates two random but distinct numbers from a given range)...
random.sample(xrange(10), 2)
...in Javascript?
Thanks in advance!
Martin
Share Improve this question asked Feb 9, 2011 at 14:53 HoffHoff 39.9k17 gold badges83 silver badges104 bronze badges4 Answers
Reset to default 5Here is my attempt using splice:
var a = [1,2,3,4,5,6,7,8,9,10];var sample = [];
sample.push(a.splice(Math.random()*a.length,1));
sample.push(a.splice(Math.random()*a.length,1));
Wrapped in a function:
function sample_range(range, n) {
var sample = [];
for(var i=0; i<n; i++) {
sample.push(range.splice(Math.random()*range.length,1));
}
return sample;
}
var sample = sample_range([1,2,3,4,5,6,7,8,9,10], 2);
We could also stick the function into Array.prototype to have something like dot notation syntax:
Array.prototype.sample_range = function(n) {
var sample = [];
for(var i=0;i<n;i++) {
sample.push(this.splice(Math.random()*this.length,1));
}
return sample;
};
var sample = [1,2,3,4,5,6,7,8,9,10].sample_range(2);
If you want to generate random numbers between 0 and n
, one way is to randomly pick number r1
in 0..n
then pick r2
from 0..n-1
and add 1 to r2
if r2 >= r1
.
function sample(range,tot){
if(tot > range){
alert('infinite loop?');
return [];
}
var myRandomNumbers = [];
for(var i = 0; i<tot; i++){
var randN = Math.floor(Math.random()*range);
while(myRandomNumbers.contains(randN)){
randN = Math.floor(Math.random()*range);
}
myRandomNumbers.push(randN);
}
return myRandomNumbers
}
var nums = sample(10,2); //array containing 2 distinct random numbers
Generate one, then repeatedly generate the second until it's not the same as the first. Tiny chance it will have to run longer, but you won't see any performance hit unless you need to generate billions of numbers.
本文标签: javascript generate 2 random but distinct numbers from rangeStack Overflow
版权声明:本文标题:javascript: generate 2 random but distinct numbers from range - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744192541a2594584.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论