c ++在2个双精度数之间生成一个双精度数

时间:2017-07-19 22:05:59

标签: c++ random double

所以我需要在2个双精度之间随机生成一个双精度数,在这个特定情况下,它是随机生成一个GPA。我最初尝试这样做:

 var formatted_address = "Lake Villa, IL 60046, USA";
 alert(formatted_address.replace(/(.+)\-([A-Z]{2})$/, "$1, $2").replace("\-", " "));

这确实很有用......我可以从0.0到3.9,但它必须从0.0到4.0(包括0.0和4.0)!将代码中的4更改为5也可以提供4.1和更高,但这并不好。

我的问题是,什么是更有效的代码编码方式?如果有一个相当直接的答案/如果这看起来很简单,我道歉,但我对编码和c ++很新。谢谢!

1 个答案:

答案 0 :(得分:1)

如果只是找到一个小数位的gpa,你可以找到0到41之间的int,然后除以10得到一个小数。例如:

double rand2 = (double)(rand()%41)/10;

rand()%41将生成一个0到40之间的数字。然后我们将其转换为double并除以10.因此,如果生成的数字为34,则我们得到3.4作为double。

要使用其他双倍作为范围,您只需将它们乘以您想要跟随数字的小数位数,然后再除以该数字

//Range== 0,34 with 3 decimal places    
double rand2 = (double)(rand()%35000)/1000;