gpt4 book ai didi

c - 如何根据概率定义rand()?

转载 作者:行者123 更新时间:2023-11-30 20:07:10 26 4
gpt4 key购买 nike

我有一个袋子,里面有三个相等的球。我编写了代码来模拟每个球脱落的次数(到目前为止它工作完美)。

代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <string.h>

#define N 50 /* Number of simulations*/
#define P 3 /* Number of of balls*/

unsigned long long millitime2(){
struct timeval tv;
gettimeofday(&tv, NULL);
return (unsigned long long)(tv.tv_usec);
}

int main() {
int i;
int num = 0;
int *v;
if((v = malloc(N*sizeof(int))) == NULL){
printf("\n\tMEMORY ERROR");
exit(1);
}
memset(v,0,N);
printf("\nexpected freq: %f\n\n", ((float)1/(float)P)*100);

for (i=0; i<N; i++){
srand(millitime2());
num = (rand()%P);
v[num]++;
}
for(i=0;i<P;i++){
printf("ball:%d picked:%d/%d freq:%f\n",i+1,v[i],N,((float)v[i]/(float)N)*100);
}
printf("\n");
return 0;
}

但现在我正在做的研究需要三个球;一个球是蓝色的,两个球是白色的。

我必须在 rand() 行中进行哪些更改,以便它三次吐出一个蓝球 (~33%),三分之二吐出一个白球( ~66%)?

最佳答案

int x = rand() % 3;

x 将选择 0 到 2 之间的“随机”数字

如果 x <= 1 则为白色 ( 66%)如果 x == 2 则蓝色 ( 33%)

关于c - 如何根据概率定义rand()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16487078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com