//**********************************************
// Online C++ Compiler.
// https://www.onlinegdb.com/online_c++_compiler
//**********************************************
#include #include /* round */using namespace std;int main()
{
unsigned int MagicNumber, RolledNumber;
double dTemp;
MagicNumber =
4294752547;
printf(
"\n Rounding Decimals to the Nearest Whole Number.");
// #0 dTemp = (
double) (MagicNumber -
1) /
429496.7295;
RolledNumber = (
unsigned int)
round(dTemp);
printf(
"\n MagicNumber - 1 = %lu, dTemp = %.08f, RolledNumber = %lu.", MagicNumber -
1, dTemp, RolledNumber);
// #1 (success) dTemp = (
double) MagicNumber /
429496.7295;
RolledNumber = (
unsigned int)
round(dTemp);
printf(
"\n MagicNumber = %lu, dTemp = %.08f, RolledNumber = %lu.", MagicNumber, dTemp, RolledNumber);
// 2^32 = 4294967295 + 1, 4294967295 - 4294752547 + 1 = 214749. printf(
"\n Conclusion. There are only 214749 numbers for which a rolled number will be 10000.");
printf(
"\n The first suitable number is %lu.", MagicNumber);
printf(
"\n WIN CHANCE is %.06f %% per each roll.",
214749.0/
4294967296.0 *
100.0);
return 0;
}
Output:
Rounding Decimals to the Nearest Whole Number.
MagicNumber - 1 = 4294752546, dTemp = 9999.49999852, RolledNumber = 9999.
MagicNumber = 4294752547, dTemp = 9999.50000085, RolledNumber = 10000.
Conclusion. There are only 214749 numbers for which a rolled number will be 10000.
The first suitable number is 4294752547.
WIN CHANCE is 0.005000 % per each roll.