面試題常見演算法之等概率生成隨機數
阿新 • • 發佈:2019-01-27
題目:隨機數函式a,產生0的概率0.7,1的概率0.3。怎樣用該隨機函式生成一個隨機函式b,使得b產生0和1的概率為0.5
程式碼實現如下:
#include<iostream> using namespace std; int main() { int alpha = 0; int beta = 0; int total = 0; for (int t = 0; t<10000; t++) { int small = 0; int big = 0; for (int i = 0; i<10000; i++) { int val = rand() % 10; if (val<3) small++; else big++; } if (big<7000) alpha++; else if (big>7000) beta++; if (big != 7000) total++; } cout << (float)alpha / (float)total << ' ' << (float)beta / (float)total << ' ' << (float)alpha / (float)total - (float)beta / (float)total << endl; return 0; }