没有重复的随机数生成器

Random Number Generator without duplicates

本文关键字:随机数生成器      更新时间:2023-10-16

>我有这个:

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

如何编辑此脚本,以便没有机会获得超过 2 次的数字?(所有数字不得重复)

没有预定义的方法。如果您只想在较小的值范围内拥有随机数,则可以保护数组中每个数字的两个副本,然后从数组中获取一个随机元素:

伪代码:

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 是一个堆栈 pop,它返回数组的第一个元素并将其删除。