2012-08-29 43 views
0

這是this answer的後續問題。我試圖建立一個循環,產生一組三個隨機數,直到它們匹配一個特定的三個任意選擇的數字的預定義集合。括號前的否定

我仍然試圖找出程序使用什麼操作符接受任意順序的隨機數,但沒有任何結果。

我想你

!(first==one && second==two && third==three) 

,但它似乎並沒有在C++工作。感謝您的回答。

+0

我很困惑你到底在做什麼。如果你問了一個以前的問題,鏈接會很好,所以人們可以獲得一些背景信息。 – chris

+0

我想你可能打算評論[這裏的答案之一](http://stackoverflow.com/questions/12157137/c-random-numbers-logical-operator-wierd-outcome)。 – Ryan

+1

我不確定這裏的問題是什麼? –

回答

2

你嘗試的條件意味着firstsecond,並third在同一個特定的順序爲onetwothree。你可以嘗試所有六種排列,但是這會造成一個相當難以理解的程序。一個更好的解決辦法是將值添加到載體,對它們進行排序,然後比較平等,就像這樣:

vector<int> a; 
a.push_back(first); 
a.push_back(second); 
a.push_back(third); 
vector<int> b; 
b.push_back(one); 
b.push_back(two); 
b.push_back(three); 
sort(a.begin(), a.end()); 
sort(b.begin(), b.end()); 
if (a == b) ... // values match 

這裏是a link to this snippet on ideone

+0

謝謝。我認爲這樣做。從評論中我收集到,也許我沒有把我的想法弄清楚。一旦我開始運行,我會更充分地解釋它。 Thx再次。 – user1627930