rand () % 6이 편향된 이유는 무엇입니까? std :: rand 사용 방법을 읽을 때 cppreference.com 에서이 코드를 찾았습니다. int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased 오른쪽의 표현에 문제가 있습니까? 그것을 시도하고 완벽하게 작동합니다. 두 가지 문제가 있습니다 rand() % 6( 두 문제에 1+영향을주지 않음). 첫째, 여러 답변에서 지적했듯이의 하위 비트 rand()가 적절하게 균일하지 않으면 나머지 연산자의 결과도 균일하지 않습니다. 둘째,에서 생성 된 고유 값의 수가 rand()6의 배수가 아니면 나머지는 높은 값보다 더 낮은 값을 생성합니다...