从1-6中选择random()数字

时间:2013-08-08 03:51:51

标签: c++ random generator

我这里有一个简单的问题,但不知道如何解决这个问题!我正在尝试创建一个数字生成器,但我只想从1-6中选择一个随机数。没有零!这个问题被标记为dup但不应该是因为这是 C ++ NOT C

srand(static_cast<unsigned int>(time(0)));
int dice = rand()%6;

3 个答案:

答案 0 :(得分:12)

rand() % 6提供0..5范围内的数字。添加一个以获取范围1..6

答案 1 :(得分:9)

如果C ++ 11是一个选项,你也有std::uniform_int_distribution,这更简单,更不容易出错(rand() Considered Harmful presentationslides ):< / p>

#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 ;
}

前一个帖子Why do people say there is modulo bias when using a random number generator?清楚地解释了克里斯在评论中指出的模数偏差。

答案 2 :(得分:4)

几乎得到了它:

int dice = rand()%6 + 1;