我遇到了一个非常奇怪的问题。我试图找到它的解决方案但是徒劳无功。我的问题是我想在1-45之间创建一个随机数,我不想再重复这个数字。
答案 0 :(得分:4)
根据定义,随机选择将随机重复。
但是,您可以构建一个包含每个数字的数组,然后对数组进行洗牌,生成随机的数字顺序而不重复。
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(","));
答案 1 :(得分:0)
这是工作代码..
Random rd =new Random();
int n = rd.Next(1,45);
答案 2 :(得分:0)
你真正想要的是在给定范围内创建一组数字并随机删除其中一个数字,直到该集合为空。
这是一个生成另一个功能的函数:
function generateRandomRangeSet(beg, end) {
var numbers = []; // Create an array in range [beg, end].
for (var i=beg; i<=end; i++) { numbers.push(i); }
return function() {
if (numbers.length < 1) { throw new Error('no more numbers'); }
var i=Math.floor(Math.random()*numbers.length), number=numbers[i];
numbers.splice(i, 1); // Return and remove a random element of the array.
return number;
}
}
var r = generateRandomRangeSet(1, 45);
r(); // => 9
r(); // => 24
r(); // => 7 ... for each number [1, 45] then ...
r(); // Error: no more numbers
答案 3 :(得分:0)
这正在工作
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}