P. *_*ank 10 javascript random
我想在一个范围内得到一个随机数,不包括一个数字(例如从1到1000不包括577).我搜索了一个解决方案,但从未解决过我的问题.
我想要的东西:
Math.floor((Math.random() * 1000) + 1).exclude(577);
Run Code Online (Sandbox Code Playgroud)
我想避免for循环创建一个尽可能多的数组,因为长度总是不同的(有时1到10000,有时是685到888555444等),生成它的过程可能需要太多时间.
我已经尝试过:
我怎么能实现这个目标?
Mar*_*lli 22
获取某个范围内的随机整数[a, b](不包括一个值)的最快方法c是在a和之间生成它b-1,然后如果它高于或等于,则将其递增1 c.
这是一个工作功能:
function randomExcluded(min, max, excluded) {
var n = Math.floor(Math.random() * (max-min) + min);
if (n >= excluded) n++;
return n;
}
Run Code Online (Sandbox Code Playgroud)
该解决方案仅具有O(1)的复杂性.
小智 5
一种可能性是不加 1,如果该数字出现,则分配最后一个可能的值。
例如:
var result = Math.floor((Math.random() * 100000));
if(result==577) result = 100000;
Run Code Online (Sandbox Code Playgroud)
这样,您就不需要重新启动随机方法,而是重复执行。并满足随机的目标。