集齐支付宝的五福只需要不到12次操作吗?
为了验证这一点,笔者在PC上模拟了随机产生福卡,重复一万次积攒福卡的过程。
这样看来,商家在福卡的数量分布上耍了小计俩。总有那么一种福卡出现的概率极小。
以下源代码:
1 #include <cstring> 2 #include <cstdio> 3 #include <ctime> 4 #include <cstdlib> 5 #define re register 6 #define GC getchar() 7 int Qread () { 8 int X = 0; 9 char C = GC ; 10 while (C > ‘9‘ || C < ‘0‘) C = GC ; 11 while (C >=‘0‘ && C <=‘9‘) { 12 X = X * 10 + C - ‘0‘ ; 13 C = GC ; 14 } 15 return X ; 16 } 17 const int Maxn = 64 , T = 10000 ; 18 int N ; 19 unsigned long long int Ed , Tot = 0 ; 20 int main () { 21 N = Qread() ,Ed = ((unsigned long long int)1 << N) - 1; 22 srand (time(0)) ; 23 for (re int i = 1 ; i <= T ; ++ i) { 24 unsigned long long int Now = 0 ; 25 int Cnt = 0 ; 26 while (Now != Ed) { 27 int X = rand() % N ; 28 Now |= ((unsigned long long int)1 << X); 29 ++ Cnt ; 30 } 31 printf ("The %d th time takes %d\n" , i , Cnt) ; 32 Tot += Cnt ; 33 } 34 putchar(10) ; 35 printf ("Average = %lf \n" , (double)Tot / T) ; 36 fclose (stdin) ; 37 fclose (stdout); 38 return 0; 39 }
原文:https://www.cnblogs.com/bj2002/p/10361460.html