产生0, 1的概率可以根据设置调整的程序:
#include <stdio.h>
#include <stdlib.h>
int EqualProbability() {
if (rand() % 2 == 0) {
return 0;
} else {
return 1;
}
}
int BiasProbability(int parameter) {
int size = parameter + 1;
if (rand() % size == 0) {
return 0;
} else {
return 1;
}
}
int main(int argc, char** argv) {
int zero_counter = 0;
int one_counter = 0;
const int kGenerateTime = 1000000;
for (int i = 0; i < kGenerateTime; ++i) {
if (EqualProbability() == 0) {
zero_counter++;
} else {
one_counter++;
}
}
printf("zero:%d one:%d\n", zero_counter, one_counter);
zero_counter = 0;
one_counter = 0;
for (int i = 0; i < kGenerateTime; ++i) {
if (BiasProbability(10) == 0) {
zero_counter++;
} else {
one_counter++;
}
}
printf("zero:%d one:%d\n", zero_counter, one_counter);
}
相关题目:

本文介绍如何设计概率发生器,使其能够根据设定产生0和1的概率,如均匀分布(1/2概率)以及非均匀分布,如1、2、3概率均为1/3,或1到n概率均为1/n。通过不同的编码策略,如对n=2使用01和10,对n=3使用001、010和100,以此类推,来实现所需概率分布。
最低0.47元/天 解锁文章
6857

被折叠的 条评论
为什么被折叠?



