ランダムな一意の番号を取得して変数に割り当てようとしています。たとえば:
var nums=[0,1,2,3,4,5,6,7];
次に、8つの変数があり、ページを更新するたびに、これらの数字の1つを一意にする必要があります。Javascriptが苦手なので、どなたか教えてください。
ランダムな一意の番号を取得して変数に割り当てようとしています。たとえば:
var nums=[0,1,2,3,4,5,6,7];
次に、8つの変数があり、ページを更新するたびに、これらの数字の1つを一意にする必要があります。Javascriptが苦手なので、どなたか教えてください。
番号がクライアント側で一意である必要がある場合は、それが可能です。たとえば、現在の時刻に基づいて数値を作成できます。
var id = new Date().getTime();
ただし、OP 状態のコメントのように、この一意の ID をすべてのクライアントで一意にする必要がある場合は、サーバー側のソリューションが必要になります。
var id = "<?php echo uniqid() ?>";
まず、配列からランダムな値を取得するには、次のようにします。
var nums = [0,1,2,3,4,5,6,7];
var num = Math.floor(Math.random() * nums.length);
alert(num);
一意である必要がある場合は、一意が何を意味するかによって異なります。1 人のユーザーに対して、全員が使い果たされるまで番号を繰り返さないという意味であれば、Cookie を使用して、どのユーザーが表示されたかを追跡できます。
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();
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
これはあなたの助けになると思います。* まず、数値を含む配列を作成する必要があります。* 次に、別の配列を作成する必要があります * 次に、この配列からランダムに数値を選択し、別の配列に配置します * その後、選択した要素を数値配列から削除します。
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;
}