Javascript 想要不重复地产生1-45之间的随机数吗

Javascript 想要不重复地产生1-45之间的随机数吗,javascript,titanium,Javascript,Titanium,我遇到了一个非常奇怪的问题。我曾试图找到解决办法,但徒劳无功。我的问题是,我想创建一个介于1-45之间的随机数,我不希望该数字再次重复。根据定义,随机选择将随机重复 但是,您可以构建一个包含每个数字的数组,然后洗牌该数组,生成一个随机的数字顺序而不重复 var nums = [], i; for( i=1; i<=45; i++) nums.push(i); nums.sort(function(a,b) {return Math.random()-0.5;}); alert(nums.j

我遇到了一个非常奇怪的问题。我曾试图找到解决办法,但徒劳无功。我的问题是,我想创建一个介于1-45之间的随机数,我不希望该数字再次重复。

根据定义,随机选择将随机重复

但是,您可以构建一个包含每个数字的数组,然后洗牌该数组,生成一个随机的数字顺序而不重复

var nums = [], i;
for( i=1; i<=45; i++) nums.push(i);
nums.sort(function(a,b) {return Math.random()-0.5;});
alert(nums.join(","));
var nums=[],i;
对于(i=1;i这是工作代码.)

Random rd =new Random();    
int n = rd.Next(1,45);

您真正想要的是在给定范围内创建一组数字,并随机删除其中一个数字,直到该数字集为空

这是一个生成另一个函数的函数,该函数的作用正好是:

function generateRandomRangeSet(beg,end){
var numbers=[];//在[beg,end]范围内创建一个数组。
for(var i=beg;i 9
r();/=>24
r();//=>7…对于每个数字[1,45],然后。。。
r();//错误:没有更多的数字
这正在工作

function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
}

拿一个.Array,用数字的范围填充它,洗牌,弹出值-1。不费吹灰之力。不替换的随机采样一点也不奇怪,它经常出现在编程教科书中,包括js在内的许多语言的在线解决方案中。如果你用谷歌搜索“javascript Random with replacement”前三个结果来自stackoverflow,第一个是。另请参见。依赖于Object.prototype的新方法。上述代码在IE8及以下版本中失败。>>new Random()----“'Random'未定义”这一定是JScript/.NET,而不是纯JavaScript。哦,是的,我的坏,javas random类有一个
nextInt
方法,把它错认为了@maerics有趣的文章