-3
我有這樣的:隨機數發生器沒有重複
for(int i=1; i<=6; i++)
cout<<rand()%48+1<<" ";
如何修改這個劇本,所以沒有機會得到數的2倍以上? (所有數字都不能重複)
我有這樣的:隨機數發生器沒有重複
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,它返回數組的第一個元素並將其刪除。
創建一個範圍內所有值的數組,然後對其使用'std :: random_shuffle'。 – 2014-11-21 13:56:36