0

我正在尝试获取随机唯一编号并将其分配给变量。例如:

var nums=[0,1,2,3,4,5,6,7];

然后我有 8 个变量,我想在每次刷新页面时取其中一个数字,而且也是唯一的。我不是很擅长 Javascript,所以请帮忙。

4

5 回答 5

2

如果数字只需要在客户端是唯一的,这是可能的。您可以根据当前时间创建一个数字,例如:

var id = new Date().getTime();

但是,如果这个唯一 ID 需要对每个客户端都是唯一的,就像您的 OP 状态中的注释一样,您将需要一个服务器端的解决方案:

var id = "<?php echo uniqid() ?>";
于 2013-01-30T14:06:58.080 回答
1

首先,要从数组中获取随机值,您可以这样做:

var nums = [0,1,2,3,4,5,6,7];
var num = Math.floor(Math.random() * nums.length);

alert(num);

如果您需要它是唯一的,那么这取决于唯一应该意味着什么。如果您的意思是对于一个用户,在他们都用尽之前永远不要重复一个数字,那么您可以使用 cookie 来跟踪已显示的数字。

于 2013-01-30T14:34:12.210 回答
0
var n = 4, uniqueRandoms = [];
function makeUniqueRandom() {
    if (!uniqueRandoms.length) {
        for (var i = 1; i < n; i++) {
            uniqueRandoms.push(i); // generates [1,2,3,4]
        }
    }
    var index = Math.floor(Math.random() * uniqueRandoms.length),
        val = uniqueRandoms[index];
    uniqueRandoms.splice(index, 1);
    return val;
}

makeUniqueRandom(4); // use
于 2015-01-08T04:05:38.980 回答
0
 function randomVarGenerator()
    {
    var s4=function()
    {
       return Math.floor(Math.random(0,9)*10).toString();

    };
    return (S4() + S4() + S4() + S4()  + S4() + S4()+ S4() + S4());
    }
randomVarGenerator();

如果它生成 uniqueString

 function randomVarGenerator()
    {
    var s4=function()
    {
       return Math.floor(Math.random() * 0x10000 /* 65536 */).toString(16);

    };
    return (S4() + S4() + S4() + S4()  + S4() + S4()+ S4() + S4());
    }

随机变量生成器();

于 2013-01-30T14:37:02.320 回答
0

我想这会对你有所帮助。* 首先你应该创建一个包含数字的数组。* 然后你应该创建另一个数组 * 然后从这个数组中随机选择一个数字并将其放置到另一个 * 之后从数字数组中删除选择的元素。

function rand(n){

var numArr = new Array("0","1","2","3","4","5","6","7","8","9","10");


var pickArr = new Array(); 

var length=16;

for(var i=0;i<n;i++){
        var num=numArr[Math.floor((Math.random()*length))];
        pickArr[pickArr.length]=num
        length--;
        numArr.splice(findRank(numArr,num), 1);

    }


    return pickArr;
}

function findRank(seq,n){
    var cnt=0;
    var flag=true;
    for(var i=0;i<seq.length&&flag;i++){
        if(seq[i]==n)flag=false;
        else cnt++;
    }

    return cnt;
} 
于 2013-07-20T11:33:06.060 回答