按这种策略,要拿到最多的金币,只有以下6种情况:
情况A:第5个房间的金币数最多,也就是第1~10个房间中的最大金币数出现在第5个房间。这种情况出现的概率是1/10。
#include <iostream> #include <cstdio> #include <cstdlib> #include <ctime> #include <iomanip> #include <vector> using namespace std; int getPercent() { vector<int> vec; int maxFour = 0; int maxTotal = 0; int result = 0; for (int i = 0; i < 10; ++i){ vec.push_back(rand()%1000000); if (maxTotal < vec[i]) maxTotal = vec[i]; } for (int i = 0; i < 4; ++i){ if (vec[i] > maxFour) maxFour = vec[i]; } for (int i = 4; i < 10; ++i){ if (vec[i] > maxFour || i == 9){ result = vec[i]; break; } } if (result < maxTotal) return -1; else return 1; } int main() { srand((unsigned)time(NULL)); int count = 0; for (int i = 0; i < 100000; ++i){ if (getPercent() == 1){ count++; } } cout << "The percentage is " << setprecision(2) << count / 100000.00; system("pause"); }
import java.util.Random; public class CodeDemo01 { public static void main(String[] args) { int total=0;; CodeDemo01 cd=new CodeDemo01(); for(int i=0;i<1000000000;i++){ int[] arr=cd.GetRandomSequence(10); if(findOut(arr)) total++; } System.out.println(total); } public static boolean findOut(int[] arr){ int max=0; int k; for(int i =0;i<4;i++){ max=max>arr[i]?max:arr[i]; } for(int i= 4;i<10;i++){ if(arr[i]>max){ if(arr[i]==9)return true; return false; } } return false; } public static int[] GetRandomSequence(int total) { int[] sequence = new int[total]; int[] output = new int[total]; for (int i = 0; i < total; i++) { sequence[i] = i; } Random random = new Random(); int end = total - 1; for (int i = 0; i < total; i++) { int num = random.nextInt(end + 1); output[i] = sequence[num]; sequence[num] = sequence[end]; end--; } return output; } }
#include<iostream> #include<vector> #include<time.h> #include<stdlib.h> using namespace std; int main() { vector<int> icon; srand((unsigned)time(NULL)); for (int I = 0; I < 5; I++) { float yes = 0; for (int j = 0; j < 100; j++) { int max = 0; icon.clear(); for (int i = 0; i < 10; i++) { int n = rand() % 9999+1; icon.push_back(n); } for (int i = 0; i < 4; i++) { if (icon[i]>max) max = icon[i]; } int flag = 0; for (int i = 4; i < 10; i++) { if (icon[i]>=max) { flag = 1; break; } } if (flag) yes++; } cout << yes << endl;; } system("pause"); return 0; }