求算法,已知整数随机函数rand(0,1),如何变化成rand(0,2)已知整数随机函数x=rand(0,1)其中 x=0的概率是1/2,x=1的概率是1/2现在要求y=rand(0,2)其中 y=0的概率是1/3,y=1的概率是1/3,y=1的概率是1/3如何用rand(0,1
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 04:48:11
求算法,已知整数随机函数rand(0,1),如何变化成rand(0,2)已知整数随机函数x=rand(0,1)其中 x=0的概率是1/2,x=1的概率是1/2现在要求y=rand(0,2)其中 y=0的概率是1/3,y=1的概率是1/3,y=1的概率是1/3如何用rand(0,1
求算法,已知整数随机函数rand(0,1),如何变化成rand(0,2)
已知整数随机函数x=rand(0,1)
其中 x=0的概率是1/2,x=1的概率是1/2
现在要求y=rand(0,2)
其中 y=0的概率是1/3,y=1的概率是1/3,y=1的概率是1/3
如何用rand(0,1)表示出rand(0,2)?
其中 y=0的概率是1/3,y=1的概率是1/3,y=2的概率是1/3
求算法,已知整数随机函数rand(0,1),如何变化成rand(0,2)已知整数随机函数x=rand(0,1)其中 x=0的概率是1/2,x=1的概率是1/2现在要求y=rand(0,2)其中 y=0的概率是1/3,y=1的概率是1/3,y=1的概率是1/3如何用rand(0,1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
/* rand(0, 1) */
int rand1(){
return rand()%2;
}
/* rand(0, 2) */
int rand2(){
int r;
do{
r = 2*rand1() + rand1();
}while(r >= 3);
return r;
}
int main(){
int i, A[3] = {0, 0, 0};
srand((unsigned)time(NULL));
for(i=0; i<10000; i++)
A[rand2()]++;
printf("%g %g %g", A[0]/10000., A[1]/10000., A[2]/10000.);
}参考自:
"http://stackoverflow.com/questions/137783/expand-a-random-range-from-15-to-17"