从1-6中选取rand()数字

picking rand() number from 1-6

本文关键字:数字 rand 选取      更新时间:2023-10-16

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

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

rand() % 6给出一个范围为0..5的数字。加一得到范围1..6

如果C++11是一个选项,那么你也有std::uniform_int_distribution,它更简单,更不容易出错(请参阅rand()被认为是有害的演示和幻灯片):

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

这个前面的线程为什么人们说在使用随机数生成器时存在模偏差?清楚地解释了chris在评论中指出的模偏。

几乎得到了:

int dice = rand()%6 + 1;