[LeetCode] 470. Implement Rand10() Using Rand7()

Chobby·3일 전

LeetCode

목록 보기
1021/1023

😎풀이

  1. 7 * (rand7() - 1) + rand7()의 점화식으로 1 ~ 49까지의 랜덤 수를 획득
  2. 단, 41 ~ 49를 포함할 경우 10의 경우의 수가 4개(10, 20, 30, 40)로 다른 수의 확률보다 낮아짐
  3. 하여 두 번의 뽑기가 40 이하인 경우에 한해 10으로 나눈 나머지값을 반환
function rand10(): number {
    let quot = Infinity
    while(quot > 40) {
        const first = rand7()
        const second = rand7()
        quot = 7 * (first - 1) + second
    }
    return (quot - 1) % 10 + 1
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글