我想创建一个介于0和1之间的随机数,但我的代码输出为零。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0));
for(int x=0;x<100;x++)
{
cout<<(rand()%10)/10<<endl;
}
return 0;
}
答案 0 :(得分:3)
这个:(rand()%10)/10
给你一个零和RAND_MAX之间的(低质量)随机整数,然后你用模数把它转换成0到9之间的一个(有偏的)整数,然后你执行整数除以10将始终是一个小于1的值,它将被截断为零。
更好的解决方案是使用C ++ 11中的随机工具,并使用std::uniform_real_distribution
获取0到1之间的值。
答案 1 :(得分:0)
你要划分一个int。任何小于1的东西都会被切割为0.你需要声明/强制转换一个double或float(有小数)。