用 Python 和 C++ 實現 拋硬幣實驗數據的統計


拋硬幣實驗數據的統計

拋硬幣實驗做100次,記錄硬幣正反面朝上的情況。利用C++語言和Python語言編程對實驗數據進行統計。分別統計正面朝上總次數、反面朝上總次數、正面連續朝上最大次數、反面連續朝上最大次數等。


拋硬幣100次,記錄情況:正面朝上為1,反面朝上為0;

程序的數據源要求有2個,一個是內置數據源,把拋硬幣的100次實驗數據內置在代碼中,另一個是允許用戶在鍵盤上實時輸入實驗數據;運行時允許用戶選擇數據源;

程序展示統計結果的界面后,提供用戶選擇:是退出程序,還是繼續統計下一輪實驗。


C++代碼

#include <bits/stdc++.h>
using namespace std;
int conti (int a[100],int x)
{
	int k = 0,max = 0;
	for (int i=0;i<100;i++){
		if (a[i]==x){
			k = k + 1;
			if (max < k){
				max = k;
			}
		}
		else{
			k = 0;
		}
	}
	return max;
}

int sum (int a[100],int x){
	int total = 0;
	for (int i=0;i<100;i++){
		if (a[i]==x){
			total = total + 1;
		}
	}
	return total;
}
main()
{
srand((int)time(NULL));
	string choice = "繼續統計下一輪數據" ;
	string anwser;
	int a[100],i=0;
	while (choice == "繼續統計下一輪數據") {
		cout<<"請選擇是否手動輸入(輸入Yes或者No):";
		cin >>anwser;
		if (anwser == "Yes"){
			while(i<100){
				cout<<"這次第"<<i+1<<"次試驗結果:";
				cin>>a[i];
				if ((a[i]==0||a[i]==1 )){
					i = i + 1;
				}
				else{
					cout<<"輸入錯誤,請重新輸入"<<endl; 
				}
			}
		}
		else if (anwser == "No"){
			for (int x=0;x<100;x++){
				a[x] = rand()%2;
				cout<<"第"<<x+1<<"次的實驗結果為:"<<a[x]<<endl; 
			}
		}	
		cout<<"硬幣正面朝上的次數為:"<<sum(a,1) <<endl;
		cout<<"硬幣正面朝下的次數為:"<<sum(a,0) <<endl;
		cout<<"硬幣連續朝上的最多次數為:"<<conti(a,1) <<endl;
		cout<<"硬幣連續朝下的最多次數為:"<<conti(a,0) <<endl;
		cout<<"請選擇'退出程序'或者'繼續統計下一輪數據'" <<endl;
		cin>>choice;
		}
}

 

Python 代碼

from random import *
from collections import *
def conti (ls,x):
    k = 0
    kmax = 0
    for i in ls:
        if i == x:
            k = k + 1
            if kmax<k:
                kmax = k
        else:
            k = 0
    return kmax
choice = '繼續統計下一輪數據'
while (choice=='繼續統計下一輪數據'):
    seed (randint(0,999))
    print("是否手動輸入:")
    answer = input()
    ls = []
    if answer == '是':
        i = 0
        while(i<100):
            print('這是第{}次的結果'.format(i+1))
            x = int(input())
            if x in [0,1]:
                ls.append(x)
                i = i + 1
            else:
                print("輸入錯誤,請重新輸入")
    elif answer == '否':
        for i in range(100):
            x = randint(0,1)
            ls.append(x)
            print('第{}次的實驗結果為{}'.format(i+1,x))
    dic = Counter(ls)
    print("硬幣正面朝上的次數為:{}".format(dic[1]))
    print("硬幣正面朝下的次數為:{}".format(dic[0]))
    print("硬幣連續朝上的最多次數為{}".format(conti(ls,1)))
    print("硬幣連續朝下的最多次數為{}".format(conti(ls,0)))
    print("請選擇‘退出程序’或者‘繼續統計下一輪數據’")
    choice = input()

 

本文代碼,僅供測試,不得抄襲轉載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM