gpt4 book ai didi

c - 在C中的循环中生成多个随机数

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:19 26 4
gpt4 key购买 nike

这个程序应该运行一个模拟,看看用户输入的数字是否少于三个随机生成的数字。所有的数字都在 0 到 1 之间。用户指定要运行模拟的试验次数,然后程序会告诉用户所有三个数字都小于他们的次数以及不小于他们的次数。问题是每次我运行该程序时,无论它应该运行多少次试验,我总是得到 1 次通过或 1 次失败。我认为这是因为我只生成一组随机数而不是指定的随机数但我不确定如何解决这个问题。

这是代码-

int main()
{
int seed, trials, pass1, fail1, i, j, k;
float reli;

printf("Enter individual component reliability:\n");
scanf("%f", &reli);

printf("Enter number of trials:\n");
scanf("%u", &trials);



srand(time(NULL));
float rndm1 = (double)rand() / (double)RAND_MAX;
float rndm2 = (double)rand() / (double)RAND_MAX;
float rndm3 = (double)rand() / (double)RAND_MAX;

while( k <= trials ); {
pass1 = 0;
fail1 = 0;
if (rndm1 <= reli && rndm2 <= reli && rndm3 <= reli){
pass1 = pass1 + 1;
}
else {
fail1 = fail1 + 1;
}

k++;
}
printf("# of passes = %d, #of failures = %d", pass1, fail1);
}

谢谢

最佳答案

我认为有 4 个问题:

正如阿杰所说:您只生成一组数字,而且您似乎每次都想获得一组不同的数字。所以你应该把它移到循环中。

然后,每次执行循环时,您都会重置通过和失败值。所以它以 0 开头每次又一次。您可能希望将声明移出循环。

第三件事是你没有循环。 while( k <= trials );意味着没有什么可做的。因为循环的结尾在 ; 处.你必须删除它。

然后,正如 StoryTeller 提到的,您必须在使用变量之前对其进行初始化。您没有遇到无限循环真是太幸运了 k=0;使用前 k

int main()
{
int seed, trials, pass1, fail1, i, j, k;
float reli;
float rndm1;
float rndm2;
float rndm3;

printf("Enter individual component reliability:\n");
scanf("%f", &reli);

printf("Enter number of trials:\n");
scanf("%u", &trials);



srand(time(NULL));
pass1 = 0;
fail1 = 0;
k = 0;

while( k < trials )
{
rndm1 = (float)rand() / RAND_MAX; //one cast is enough but casting both is not wrong and if you use float cast to float
rndm2 = (float)rand() / RAND_MAX;
rndm3 = (float)rand() / RAND_MAX;

if (rndm1 <= reli && rndm2 <= reli && rndm3 <= reli)
{
pass1 = pass1 + 1;
}
else
{
fail1 = fail1 + 1;
}
k++;
}
printf("# of passes = %d, #of failures = %d", pass1, fail1);
}

关于c - 在C中的循环中生成多个随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43249121/

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