
Originally Posted by
zyramae
...
while (n1==n2 or n1==n3 or n1==n4 or
n2==n3 or n2==n4 or
n3==n4){
...
sepertinya masih nyambung dengan tread ini
dari pada nulis kondisi yang panjang di while statement kenapa gak coba buat function yang bikin angka random gak double
Code:
//buat array angka dengan batas ditentukan lalu diacak
function createNumberAndShuffle(endNum:Number):Array
{
//create Number
var arr:Array = [];
var i:Number = 0;
while (i < endNum)
{
arr[i] = i;
i++;
}
//shuffle array
var j:Number = arr.length;
var k:Number = 0;
var temp:Number = 0;
if (j == 0)
return [0];
//fisher-yates shuffle
while (--j)
{
k = Math.floor(Math.random() * (j + 1));
temp = arr[j];
arr[j] = arr[k];
arr[k] = temp;
}
return arr;
}
function acak_soal()
{
var shuffleArray:Array = createNumberAndShuffle(20);
n1 = shuffleArray[0];
n2 = shuffleArray[1];
n3 = shuffleArray[2];
n4 = shuffleArray[3];
n5 = shuffleArray[4];
n6 = shuffleArray[5];
}
acak_soal();
trace([n1, n2, n3, n4, n5, n6]);//random gak muncul 2x atau dengan mengecheck apakah nomor random tersebut sudah pernah muncul atau belum
Code:
/**
* @param length banyaknya angka random
* @param rand batasan angka random
* @return Array
*/
function myRandom(length:Number,rand:Number):Array
{
var i:Number = 0, j:Number = 0, arr:Array = [];
while (i<length)
{
arr[i] = Math.floor(Math.random() * rand);
while (checkNum(arr[i], arr))
{
arr[i] = Math.floor(Math.random() * rand);
}
i++;
}
function checkNum(rand:Number,arr:Array):Boolean
{
var i:Number;
while (i<arr.length-1)
{
if (rand == arr[i])
return true;
i++;
}
return false;
}
return arr;
}
function acak_soal()
{
var shuffleArray:Array = myRandom(6,20);
n1 = shuffleArray[0];
n2 = shuffleArray[1];
n3 = shuffleArray[2];
n4 = shuffleArray[3];
n5 = shuffleArray[4];
n6 = shuffleArray[5];
}
acak_soal();
trace([n1, n2, n3, n4, n5, n6]);//random gak muncul 2x
Bookmarks