0

ランダムな一意の番号を取得して変数に割り当てようとしています。たとえば:

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

次に、8つの変数があり、ページを更新するたびに、これらの数字の1つを一意にする必要があります。Javascriptが苦手なので、どなたか教えてください。

4

5 に答える 5

2

番号がクライアント側で一意である必要がある場合は、それが可能です。たとえば、現在の時刻に基づいて数値を作成できます。

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

ただし、OP 状態のコメントのように、この一意の ID をすべてのクライアントで一意にする必要がある場合は、サーバー側のソリューションが必要になります。

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);

一意である必要がある場合は、一意が何を意味するかによって異なります。1 人のユーザーに対して、全員が使い果たされるまで番号を繰り返さないという意味であれば、Cookie を使用して、どのユーザーが表示されたかを追跡できます。

于 2013-01-30T14:34:12.210 に答える
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());
    }

randomVarGenerator();

于 2013-01-30T14:37:02.320 に答える
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 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 に答える