상트페테르부르크 현상. 확률 이론의 역설. - 페이지 3

 
Dmitry Fedoseev :

4의 비율에서 게임은 동등한 기반에 있는 것 같습니다(게임 규칙을 올바르게 이해한 경우).

 if ( MathRand ()/ 32768.0 < 0.5 )  ...
 if ( MathRand ()% 2==0 ) ...

또는

 if ( MathRand ()% 2 ) ...

또는

 if ( MathRand ()< 16384 ) ...
 
Nikolai Semko :

또는

또는

마지막 옵션. 곡선 분할의 나머지 부분 - 확인됨.

 
Dmitry Fedoseev :

마지막 옵션입니다. 곡선 분할의 나머지 부분 - 확인됨.

왜 곡선인가? 곡선이 아니라 컴파일러가 맹세하지만 헛된 맹세입니다.

맹세하지 않으려면 다음과 같이 할 수 있습니다.

 if ( bool ( MathRand ()% 2 ))  ...

확인하는 것은 어렵지 않습니다.

 int OnStart ()
  {
   for ( int i= 0 ; i< 10 ; i++) if ( bool ( MathRand ()% 2 )) Print (i);
  }  
 
Nikolai Semko :

왜 곡선인가? 곡선이 아니라 컴파일러가 맹세하지만 헛된 맹세입니다.

맹세하지 않으려면 다음과 같이 할 수 있습니다.

확인하는 것은 어렵지 않습니다.

우리는 그것이 전혀 무작위가 아님을 확인했습니다. 그것은 오래 전, 여전히 4 번째 포럼에 있습니다. 그들이 그것을 어떻게 확인했는지 정확히 기억하지 못하지만, 그 그림은 꽤 사인 곡선처럼 보였습니다. 요점은 컴파일러가 맹세한다는 것이 아닙니다.

 
Dmitry Fedoseev :

우리는 그것이 전혀 무작위가 아님을 확인했습니다.

글쎄, 무슨 말을 하는거야!

MathRand()%2 표현식은 0 또는 1의 두 가지 값만 사용합니다.

 
Dmitry Fedoseev :

우리는 그것이 전혀 무작위가 아님을 확인했습니다. 그것은 오래 전, 여전히 4 번째 포럼에 있습니다. 그들이 그것을 어떻게 확인했는지 정확히 기억하지 못하지만, 그 그림은 꽤 사인 곡선처럼 보였습니다. 요점은 컴파일러가 맹세한다는 것이 아닙니다.

예, 당신의 생각을 이해합니다. 실제로 저는 임의의 프로세스에서 탈락하는 것을 보았습니다. rand() 알고리즘이 완벽하지 않다는 것을 알 수 있습니다.
예, 그런 변형은 특히 매트가 없기 때문에 가장 빠르기 때문입니다. 작업:

 if ( rand ()< 16384 ) ...
 
Nikolai Semko :

글쎄, 무슨 말을 하는거야!

MathRand()%2 표현식은 0 또는 1의 두 가지 값만 사용합니다.

그러나 결국, 당신은 합산하거나 2가 아닌 나머지를 취할 수 있습니다.

 
예, 가장 일반적인 옵션은 if(rand()<16384)입니다. 아무 생각도 하지 않았습니다))
 
Dmitry Fedoseev :
예, 가장 일반적인 옵션은 if(rand()<16384)입니다. 아무 생각도 하지 않았습니다))

다음과 같이 되돌릴 수도 있습니다.

 if ( rand ()< 1 << 14 ) 

그것은 절대적으로 동일하지만 대다수가 아무것도 이해하지 못하는 방식입니다. ))

 
그러나 0에서 5, 또는 최대 7 또는 최대 다른 숫자가 필요한 경우? 여전히 32768.0으로 나누어야 합니다. 아니면 옵션이 있습니까?