1. 程式人生 > >C++差分隱私的指數機制的一種實現方法

C++差分隱私的指數機制的一種實現方法

list and span 機制 namespace stdio.h int class ++

#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<cmath>
#include<time.h>
using namespace std;

int expMechanism(int* score, int m, double epsilon, int sensitivity)
{
    double *exponents_list=new double[100];
    int i=0,j=0;
    double
expo; double sum=0; double r; double sum_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()%100))/100; for(j=0;;j++) { sum_exp=sum_exp+exponents_list[j]; if(sum_exp>r) break; } return j; } int main() { int score[5] = {5,8,10,10,10}; //輸入的各項評分 double epsilon = 1.0; int sensitivity = 1
; int m = sizeof(score)/sizeof(int); int result = expMechanism(score, m, epsilon, sensitivity); cout<<result<<endl; //輸出項的序號 return 0; }

C++差分隱私的指數機制的一種實現方法