Flash CS4 + ActionScript 3.0로 만든 조작된 주사위.

주사위 굴리기 버튼을 마우스로 클릭할 때 마다 주사위의 눈이 나오고 현재 나온 수의 뒷쪽에 밝은 노란색이 표시되고 각각 주사위의 나온 눈 수와 나온 확률이 표시된다.

주사위 눈 중에서 3이 압도적으로 많이 나오는(60%를 넘게) 주사위를 만들고 각각의 눈이 나온 수와 나온 확률 수를 표시하게 하기.

이런 방법을 활용하면 어떤 수가 다른 수들에 비해 어떤 정도의 확률로 더 나오게 조절이 가능해서 캐릭터들의 특성을 정하거나 할 때 사용이 가능할 듯.
예를 들어 1이 보통, 2가 울기, 3이 웃기, 4가 화내기... 등이라고 정할 경우 위의 3이 자주 나오는 주사위는 주로 웃는 상태를 유지하게 된다는 것.

15/5/6 수

1에서 100 사이의 난수를 일단 구한 뒤 50이하는 무조건 3의 눈으로 정하고
50이상일 경우엔 새로 1에서 6 사이의 난수를 구해 정하는 방식.
결국 3은 50% + 1/6(약 17%) 의 확률로 60%가 넘게 나오게 된다.

뭔가 배열을 활용하면 좀 더 코드의 축약, 정리가 가능할 듯 한데 귀찮아서 이 정도까지만.

화면상에 'diceM'란 이름의 6개의 프레임으로 주사위 6개의 눈을 표현하는 주사위 무비클립, 'pointM' 이란 이름의 현재 나온 주사위 눈 수 뒷쪽에 밝은 노란색을 비추는 무비클립, 'rollButM'이란 이름의 버튼 모양 무비클립과 주사위 눈 수 표시용 'd1'~'d6', 주사위 눈 등장 확률 표시용 'p1'~'p6'의 이름을 가진 다이나믹 텍스트 박스를 만들어 뒀다.
var n1=0,n2=0,n3=0,n4=0,n5=0,n6=0; //주사위 눈 나온 숫자 저장용
var r1=0,r2=0,r3=0,r4=0,r5=0,r6=0; //주사위 눈 나온 확률 저장용
var totNum=0; //주사위 굴린 총 횟수 저장용

function init(){
     displayDiceNums(); //각 주사위 눈 나온 숫자 표시
     rollButM.addEventListener(MouseEvent.CLICK, butClick);
}
function butClick(e:MouseEvent){ //버튼 클릭시
     var diceNum = throwDice();
     diceM.gotoAndStop(diceNum); //주사위 모양 변경
     pointM.gotoAndStop(diceNum); //나온 숫자 비추기
     switch(diceNum){ //주사위 나온 수에 따라 해당 값 증가 시키기
          case(1): n1++; break;
          case(2): n2++; break;
          case(3): n3++; break;
          case(4): n4++; break;
          case(5): n5++; break;
          case(6): n6++; break;
     }
     displayDiceNums(); //각 주사위 눈 나온 숫자, 확률 표시
}
function throwDice(){ //주사위 던지기
     //일단 0~100 사이 수를 구한다.
     var randomProbability = Math.random()*101;
     if( randomProbability < 50){//나온 난수가 50이하일 경우
          return 3;
     }else{//그외의 경우
          return Math.floor(Math.random()*7);
     }
}
function displayDiceNums(){ //각 주사위 눈 나온 숫자, 확률 표시
     d1.text = n1; //나온 숫자들 표시
     d2.text = n2;
     d3.text = n3;
     d4.text = n4;
     d5.text = n5;
     d6.text = n6;
     //나온 확률 구해 표시하기
     totNum = n1+n2+n3+n4+n5+n6;
     if(totNum == 0) totNum = 1; //맨처음 0으로 나누기 방지
     r1 = n1 / totNum * 100;
     r2 = n2 / totNum * 100;
     r3 = n3 / totNum * 100;
     r4 = n4 / totNum * 100;
     r5 = n5 / totNum * 100;
     r6 = n6 / totNum * 100;
     p1.text = r1;
     p2.text = r2;
     p3.text = r3;
     p4.text = r4;
     p5.text = r5;
     p6.text = r6;
}

init();