随机数生成器没有重复

时间:2014-11-21 13:36:31

标签: c++ random

我有这个:

for(int i=1; i<=6; i++)
    cout<<rand()%48+1<<"    ";

如何修改此脚本,以便无法获得超过2次的数字? (所有数字不得重复)

1 个答案:

答案 0 :(得分:0)

没有预定义的方法。如果您希望仅在较小的值范围内使用随机数,则可以在数组中保护每个数字的两个副本,然后从数组中获取随机数:

伪代码:

AvailableNumbers = array(1, 1, 2, 2, ... 48, 48)
// Shuffle the array:
For i = 1 : 48 {
    swap(AvailableNumbers[i], AvailableNumbers[rand(0, len(AvailableNumbers) - 1])
}

// Take 6 elements:
for i = 1 : 6 {
    print pop(AvailableNumbers[i])
}

pop是一个堆栈弹出窗口,它返回数组的第一个元素并将其删除。