c ++中0到1之间的随机数

时间:2017-01-31 15:15:29

标签: c++ random

我想创建一个介于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;
}

2 个答案:

答案 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(有小数)。