2016-09-06 34 views
3

我想通過在該範圍內生成隨機整數來找到最大和最小數之間的整數所需的猜測總數從最小到最大,直到找到匹配的數字。找到一個最大和最小數之間的數字,並在該範圍內產生一個隨機整數

例如,當我進入max = 10min = 1,然後我選擇說5是這兩個數字之間,我想生成從範圍1:10一個隨機數,直到我的電話號碼的5所選擇的被發現,我們展示爲了獲得這個數字而進行的試驗計數。我在MATLAB中編寫了下面的代碼,但我不明白它爲什麼不起作用。

minumber = input('Please enter a minimum value: '); 
maxnumber = input('Please enter a maximum value: '); 
choicenumber = input('Please enter your choice in this range: '); 
randnumber = (maxnumber-minumber).*rand(maxnumber,1) + minumber; 
i = 1; 

while randnumber(i) ~= choicenumber 
     tries(i) = randnumber(i); 
     i = i + 1; 
end 
fprintf('It took %d tries to generate your number', i); 

回答

0

我有三點意見:

  1. 如果你的目的是要產生隨機整數,不使用rand。這將生成[0,1]範圍內的浮點數,並且如果您縮放此數字以確認其爲最小和最大範圍,則浮點錯誤將阻止您正確執行相等比較。看看這個規範的堆棧溢出帖子:Why is 24.0000 not equal to 24.0000 in MATLAB?。如果要生成隨機整數,請改爲使用randi。實際上,您可以指定直接生成的最小和最大整數,該整數作爲一個雙元素數組輸入。

  2. while裏面你應該生成這個數字。您只能在while循環之外生成一次該號碼,並且只有在第一次嘗試生成所需號碼時纔會退出。否則將無限期地掛起。

  3. 使tries變量只是一個標量。你只是想積累它需要猜測的次數。對randnumber做同樣的事情。根據我在代碼中看到的內容,您不需要記住每個猜測的歷史記錄。


通過上述意見,做這樣的事情,而不是:

minumber = input('Please enter a minimum value: '); 
maxnumber = input('Please enter a maximum value: '); 
choicenumber = input('Please enter your choice in this range: '); 

randnumber = randi([minumber maxnumber], 1); % Change 
tries = 1; % Change 

while randnumber ~= choicenumber 
     randnumber = randi([minumber maxnumber], 1); % Regenerate number 
     tries = tries + 1; % Change 
end 
fprintf('It took %d tries to generate your number.\n', tries); % Change 

我把上面的代碼到名爲test_random.m測試腳本,跑了幾次。下面是我用你想要的輸入運行的一些示例運行:

>> test_random 
Please enter a minimum value: 1 
Please enter a maximum value: 10 
Please enter your choice in this range: 5 
It took 4 tries to generate your number. 
>> test_random 
Please enter a minimum value: 1 
Please enter a maximum value: 10 
Please enter your choice in this range: 5 
It took 10 tries to generate your number. 
>> test_random 
Please enter a minimum value: 1 
Please enter a maximum value: 10 
Please enter your choice in this range: 5 
It took 16 tries to generate your number. 
+0

感謝您的簡潔,是的,我應該在while循環中包含隨機數。謝謝 – Pharcyde

+0

@Pharcyde不客氣!祝你好運。 – rayryeng

相關問題