我这里有一个简单的问题,但不知道如何解决这个问题!我正在尝试创建一个数字生成器,但我只想从1-6中选择一个随机数。没有零!这个问题被标记为dup但不应该是因为这是 C ++ NOT C :
srand(static_cast<unsigned int>(time(0)));
int dice = rand()%6;
答案 0 :(得分:12)
rand() % 6
提供0..5
范围内的数字。添加一个以获取范围1..6
。
答案 1 :(得分:9)
如果C ++ 11是一个选项,你也有std::uniform_int_distribution
,这更简单,更不容易出错(见rand() Considered Harmful presentation和slides ):< / 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;