#include <iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<cmath>#include<time.h>using namespacestd;intExpmechanism (int* Score,intMDoubleEpsilonintsensitivity) { Double*exponents_list=New Double[ -]; intI=0, j=0; DoubleExpo; Doublesum=0; DoubleR; Doublesum_exp=0; for(i=0; i<m;i++) {Expo=0.5*(Double) (Score[i]) *epsilon/sensitivity; Exponents_list[i]=exp (Expo); } for(i=0; i<m;i++) {sum=sum+Exponents_list[i]; } for(i=0; i<m;i++) Exponents_list[i]=exponents_list[i]/sum; Srand ((int) Time (0)); R=((Double) (rand ()% -))/ -; for(j=0;; J + +) {Sum_exp=sum_exp+Exponents_list[j]; if(sum_exp>R) Break; } returnJ;}intMain () {intscore[5] = {5,8,Ten,Ten,Ten};//the scores entered DoubleEpsilon =1.0; intSensitivity =1; intm =sizeof(Score)/sizeof(int); intresult =expmechanism (Score, M, epsilon, sensitivity); cout<<result<<endl;//the ordinal of the output item return 0;}
An implementation method of the exponential mechanism of C + + differential privacy