C++ 从1-6中选取rand()编号

C++ 从1-6中选取rand()编号,c++,random,generator,C++,Random,Generator,我这里有一个简单的问题,但不知道如何解决这个问题!我正在尝试创建一个数字生成器,但我只希望它从1-6中选择一个随机数。没有零!这个问题被标记为DUP,但不应该是因为这是C++而不是C:< /P> srand(静态_-cast(时间(0)); int dice=rand()%6; rand()%6给出的数字范围为0..5。添加一个以获得范围1..6几乎获得了: int dice=rand()%6+1如果C++11是一个更简单、更不容易出错的选项(请参阅和): #包括 #包括 int main()

我这里有一个简单的问题,但不知道如何解决这个问题!我正在尝试创建一个数字生成器,但我只希望它从1-6中选择一个随机数。没有零!这个问题被标记为DUP,但不应该是因为这是C++而不是C:< /P>
srand(静态_-cast(时间(0));
int dice=rand()%6;
rand()%6
给出的数字范围为
0..5
。添加一个以获得范围
1..6

几乎获得了:


int dice=rand()%6+1

如果C++11是一个更简单、更不容易出错的选项(请参阅和):

#包括
#包括
int main()
{
std::随机_装置rd;
std::mt19937 e2(rd());
标准:均匀分布区(1,6);
对于(int i=0;i<10;++i)
{

std::不能只在
骰子中添加1。接近重复:使用
rand()/rand\u MAX*(MAX\u n-min\u n)+min\n;
@GrijeshChauhan-
rand()/rand\u MAX
几乎一直都是0;两个表达式都有type
int
,并且
rand()返回的值永远不会大于<代码> RANDMAX的值。使用<代码> RAND()/BULL(RANDMAX) >,或者您最喜欢的变体。将C++问题作为C问题的DUP关闭是有点傻的,因为许多C++解决方案不是有效的C解决方案,至少找到一个DUP W/正确的标签。
生成器与模偏差相结合。@chris添加了一个解释模偏差的链接
srand(static_cast<unsigned int>(time(0)));
int dice = rand()%6;
#include <iostream>
#include <random>

int main()
{
    std::random_device rd;

    std::mt19937 e2(rd());

    std::uniform_int_distribution<> dist(1, 6);

    for( int i = 0 ; i < 10; ++i )
    {
       std::cout << dist(e2) << std::endl ;
    }

    return 0 ;
}