在c ++中均匀地生成随机数

时间:2017-09-22 21:25:09

标签: c++ random

我想制作一个长度为16个元素的数字0,1,2列表,其中每个数字出现的次数相等(加或减1)

所以结果如下所示:0, 1, 0, 2, 1, 2, 1, 0, 2, 2, 1, 1, 0, 0, 2, 0

每个数字出现的次数

0 : 6
1 : 5
2 : 5

这是我的代码,是否有任何想法可以均匀地制作?

srand(time(NULL));
for(int j = 0; j < 16; j++)
{
    int num = rand() % 3;
    if(j == 15)
        cout << num;
    else
        cout << num << ",";
}

1 个答案:

答案 0 :(得分:7)

您可以创建一个包含相同数量的值的列表,然后随机随机播放它们。

这样的事情:

 0 2 0 1 0 1 0 1 2 2 0 1 1 2 2 0

<强>输出:

UPDATE srs1.courseedition
    SET ta_id = (SELECT ta.ta_id
                 FROM srs1.teacherassistant ta
                 ORDER BY RANDOM()
                 LIMIT 1
                );