除了随机数不能为 3 之外,如何生成 1 - 10 之间的随机数
问问题
4702 次
7 回答
5
获取 1 到 9 之间的随机数,如果大于或等于 3,则添加一个,或者
更好,只需将任何3
s 更改为10
s。
function getNumber() {
return (n = 9 * Math.ceil(Math.random())) === 3? 10: n;
}
于 2013-01-27T15:01:10.117 回答
2
基于这个不错的答案:
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var rand;
while((rand = getRandomInt(1, 10)) == 3);
// rand is now your random number
于 2013-01-27T15:03:36.093 回答
0
这是一个简短、快速的解决方案,使用自动执行功能,可以完全满足您的需求,但仅对您描述的特定情况有用:
var randOneToTenButNotThree = function () {
var result = Math.floor(Math.random() * 10) + 1; // PICK A NUMBER BETWEEN 1 AND 10
return (result !== 3) ? result : randOneToTenButNotThree(); // IF THE NUMBER IS NOT 3 RETURN THE RESULT, OTHERWISE CALL THIS FUNCTION AGAIN TO PICK ANOTHER NUMBER
}
var result = randOneToTenButNotThree(); // RESULT SHOULD BE A NUMBER BETWEEN 1 AND 10 BUT NOT 3
但是,您可以将其抽象出来以产生任何给定范围内的随机数,不包括您选择的任何数字:
var randExcl = function (lowest, highest, excluded) {
var result = Math.floor(Math.random() * (highest - lowest)) + lowest;
return (result !== excluded) ? result : randExcl();
}
var result = randExcl();
只是不要忘记,如果函数被重命名,您还应该在该 return 语句的末尾从内部更改对它的引用,以便它可以在产生排除数字时继续调用自己。
于 2013-01-27T15:16:34.813 回答
0
函数 r(){a = Math.floor(Math.random() * 10) + 1; 如果 (a==3) a++; 返回一个;}
于 2013-12-24T08:07:14.077 回答
0
function rand(){
var r = Math.ceil(Math.random() * 10);
if (r==3){
return rand()}
else
return r;
}
于 2013-01-27T15:03:33.587 回答
0
这应该有效。
var r = 3;
while(r == 3) r = Math.ceil(Math.random() * 10);
于 2013-01-27T15:00:26.217 回答
0
function rand(begin, end) {
var result = Math.floor( Math.random() * (end - begin + 1) ) + begin;
return result === 3 ? rand(begin, end) : result;
}
于 2013-01-27T15:01:33.017 回答