我想在地圖上生成5個隨機位置。我只能想出下面的代碼,它使用while (1)
和break
:如何獲得N個唯一的隨機數量而不是無限循環?
int map[10][10];
memset(map,0,sizeof(map));
for (int i = 0; i < 5; i++) {
while (1) {
int x = RAND_FROM_TO(0, 10);
int y = RAND_FROM_TO(0, 10);
if (map[x][y]==0) {
map[x][y]=1;
break;
}
}
}
是否有任何其他的方式做不同時,同樣的工作(1),因爲我已被告知,而(1)很壞。
我只是想找到一個簡單的方法來做到這一點,所以生成隨機數的效率不在我的考慮之下。
爲什麼你認爲你需要'while(1)'?如果刪除'while(1)'和'break'語句會發生什麼? – 2014-10-28 16:21:49
@jeffamaphone我想,如果已經有一個「1」的風險。 – AntonH 2014-10-28 16:22:22
@jeffamaphone因爲我想生成不同的5位置。但我不知道隨機數能滿足它多少次。所以我把(1)放在那裏。 – AlexWei 2014-10-28 16:24:32