在C语言中生成固定的成功率或失败率

在C语言中生成固定的成功率或失败率,c,C,我正在尝试使用C中的rand()函数生成成功或失败的百分比。这是预期的“良好的土壤图在30%的时间出现,而不良的土壤图在70%的时间出现。使用rand()函数来决定应该出现哪个图。”我想使用(某个%a数字)就可以了,但是我被卡住了。if(rand()/(rand_MAX+1.)

我正在尝试使用C中的rand()函数生成成功或失败的百分比。这是预期的“良好的土壤图在30%的时间出现,而不良的土壤图在70%的时间出现。使用rand()函数来决定应该出现哪个图。”我想使用(某个%a数字)就可以了,但是我被卡住了。

if(rand()/(rand_MAX+1.)<.3){
if (rand() / (RAND_MAX + 1.) < .3) {
   /* good soil */
} else {
   /* poor soil */
}
/*好土*/ }否则{ /*贫瘠的土壤*/ }

这里,
rand()/(rand_MAX+1。)
产生一个均匀分布在
[0,1)
。我们将这个数字与
.3
进行比较,以获得30%的良好土壤。

10次中有多少次是30%?你能将其转化为你可以使用的东西吗?我明白你的意思,10 x.3=3,7也是如此,类似于“成功=(rand()%3)或失败=(rand()%7);”工作?NPE的答案在修正偏差的情况下肯定更好。我想用一种简单的逻辑方法,如果你有从1到10的数字,1-3占30%。你知道如何生成一个范围内的数字,你可以看到它们在这个范围内的什么位置,以确定它们应该被计算为30%还是70%。这种方法的主要问题是虽然这本书可能很容易看出来,但它有偏见。谢谢!你比我正在使用的那本书更清楚、更有用。事实上,我也更了解它。