오늘은 Weighted Seletion 가중선택 두 번째 삽을 뜨는 날이예요~^^*
그런데요~^^*
제가 지금 이동을 하고 있어서요~^^*
코딩 공부 정리는 오늘 밤에 올리도록 할게요~^^*
와우! 아주 멋진 Friday Night 금욜밤이 될 것 같은데요~~^^*
이동하면서 우리 음악 같이 들을까요~~^^* Live로 우리 함께 해요~~^^*
오늘은 크리스마스가 되기 5일 전이네요~^^*
숫자 5는 힘! 완전함!을 의미한다고 해요~^^*
숫자 5! 사랑과 존중의 힘! Power of Love! 으로 가득찬 크리스마스가 되면 좋겠어요~^^*
힘 있는 하루 보내시고요~^^* 저는 밤에 다시 돌아올게요~^^* 쓩~~
즐거운 금요일 보내셨나요~^^* 벌써 밤이 많이 깊어졌어요~^^*
이제 코딩 공부 해 볼게요~^^*
어쩌면 좀 있다 밤 12시 종이 칠지도 모르겠어요~^^*
지금 신데렐라는 유리구두를 신고 왈츠를 추고 있겠네요~~^^* Friday Night~~^^*
호박마차가 잘 대기하고 있기를 바라며, 우리는 코딩 공부를 해 볼까요~^^*
네~^^*
오늘은 무작위 수를 뽑았는데 확률을 반영한 선택을 하게 되는 새로운 알고리즘을 공부해 볼까해요~^^*
이 알고리즘은~^^* 군집 배열을 새로 만들지 않아도 되고요~^^* 무작위 수를 두 번 생성하지 않아도 된다고 해요~^^*
방법은 엄청 간단한데요~~^^* 왜 이렇게 하면 확률에 기반한 선택이 되는지는 쉽게 이해되지 않을 수도 있을 것 같아요…
그래도 일단~^^* 이 알고리즘을 핵심 코드를 이해해 볼게요~^^*
function pickOne(list) {
let index = 0;
//변수 index는 군집의 몇 번째 구성요소인지를 나타내는 기능을 합니다.
let r = random(1);
//0과 1 사이 무작위 수를 뽑아 변수 r에 저장합니다.
while (r > 0) {
//r이 0보다 클 동안 아래 작업들을 반복합니다.
r = r - list[index].prob;
//r에서 군집의 index번째 구성요소의 확률을 빼어 다시 r에 저장합니다.
index++;
//index에 1을 더합니다.
}
//r이 0보다 작거나 같으면 반복구문을 빠져 나옵니다.
index--;
//index에 1을 뺍니다.
//반복문을 빠져나오기 직전에
//index를 1 증가시키고 아무 일도 없었기 때문에,
//반복문을 빠져 나온 후
//index를 1 감소시켜야 올바른 순번표시 역할을 할 수 있을 것 같습니다.
return list[index];
//군집의 index번째 구성요소를 return 반환합니다.
}
너무 간단해서 많이 헷갈릴 수도 있을 것 같아요…
그래서…손으로 과정을 따라가 보았는데요…오우..정말..확률대로 선택이 되는 것 같아요.
한 번 살펴 보실까요~^^*



그럼 전체 코드를 우리 함께 살펴 볼까요~^^*
const fruits = [
{ name: 'mango', score: 5 },
{ name: 'blueberry', score: 3 },
{ name: 'cherry', score: 1 },
{ name: 'apple', score: 1 }
];
function setup() {
let sum = 0;
for (let i = 0; i < fruits.length; i++) {
sum += fruits[i].score;
}
for (let i = 0; i < fruits.length; i++) {
fruits[i].prob = fruits[i].score / sum;
fruits[i].count = 0;
}
for (let i = 0; i < 100000; i++) {
let fruit = pickOne(fruits);
fruit.count++;
}
console.log(fruits);
}
function pickOne(list) {
let index = 0;
let r = random(1);
while (r > 0) {
r = r - list[index].prob;
index++;
}
index--;
return list[index];
}
왜 이렇게 작동되는지는 잘 모르겠지만, 작동이 되는 것을 손으로 따라가며 확인해 보니, 많이 신기하기도 하구요. 맨처음 누가 어떻게 생각해낸 알고리즘인지도 궁금해 지네요~^^*
와우~~^^* 우리가 또 하나의 도전을 해낸 것이기도 하네요~^^*
9 – 8 Genetic Algorithm: Improved Pool Selection 동영상 강의 내용을 마무리 해내었습니다~~^^*
밤 열두 시가 넘었네요. 신데렐라가 무사히 집에 도착했기를 바래요~^^*
무도회의 기억을 가슴에 품고 눈 말똥말똥 뜨고 침대에 누워 있을 것 같아요~^^*
호박마차를 몰고 온 생쥐 마부들도 쥐구멍에 들어가 코~ 단잠에 들겠네요^^*
우리도 이제 하루를 마무리 해 볼까요~~^^*
오늘 저와 함께 Weighted Selection 가중선택 알고리즘을 살펴봐 주셔서 감사합니다~^^*
따뜻한 밤 조용한 밤 보내시고요~^^*
그리고 우리 내일 또 만나요~^^* 네~^^* 새로운 도전이 또 우리를 기다리고 있어요~^^*
네~~^^* 꿈은 이루어 집니다~^^*
댓글 남기기